2015-08-18 3 views
2

Я написал сценарий, который, когда опубликованы как веб-приложение, будет рассчитывать количество писем в почтовом ящике, вместе с датой самого раннего отправленное сообщение и выход в формате CSV:Как скрипт Google может собирать информацию из общего почтового ящика?

function doGet() { 
    // get all threads in inbox 
    var threads = GmailApp.getInboxThreads(); 
    var dataLength = threads.length 

    var earliestMessage = new Date(); 

    for (var y = 0; y < dataLength; y++) { 
    var message = threads[y] 

    //sets last message date in thread y 
    var msgDate = message.getLastMessageDate(); 

    //checks last message date to current value of earliestMessage, updates if necessary 
    if(msgDate.valueOf() < earliestMessage.valueOf()) { 
     earliestMessage = msgDate 
    } 
    } 

    //save to external files 
    return ContentService.createTextOutput(dataLength + '\n' + Utilities.formatDate(earliestMessage, 'GMT', 'dd/MM/yyyy')).downloadAsFile('emailData.csv'); 
} 

Это отлично работает, но теперь я хотел бы, чтобы этот скрипт возвращал ту же информацию из общего почтового ящика, к которому у меня есть доступ. Поскольку это общий почтовый ящик, у меня нет возможности просто получить доступ к его Google Диску и сохранить там сценарий (сообщите мне, если я ошибаюсь в этом!), Поэтому скрипт будет когда-либо возвращать информацию о моем собственном аккаунте ,

Я попытался найти аналогичные вопросы, но ближе всего я нашел являются, ни один из которых, кажется, есть четкие решения:

Будет ли перезаписываться сценарий (и если да, как?) Или существует способ направления класса GmailApp в общий почтовый ящик вместо моего собственного?

ответ

1

Так что я считаю, что ваш общий почтовый ящик должен быть настроен как обычный пользователь google. Если это так, то нет причин, по которым вы не можете настроить для них привод Google.

Вторая часть этой проблемы является то, что вы хотите создать с помощью этого сценария, если вы просто хотите, чтобы информация из вашего общего почтового ящика вы можете:

  • Поместите скрипт в дисководе общего доступа пользователя и запустить it as them
  • Оставьте скрипт на своем диске, запустите его как User accessing the web appPublish -> Deploy as web app...), и когда вы запустите его, убедитесь, что вы вошли в систему как общий пользователь.

Теперь, если вы хотите объединить два потока информации, это совсем другая история, я не верю, что вы можете в том же скрипте работать как два разных пользователя. Я также тестировал библиотеки, и они, похоже, используют одного и того же пользователя сеанса, поэтому, насколько я вижу, у вас действительно есть только один вариант. Создавая сценарий webapp для извлечения информации и запуска ее в качестве общего пользователя, и возвращайте ее как json/xml (или даже CSV, если вы просто добавляете ее), затем используйте HTTP-вызов (используя URLFetchApp) в существующем скрипте для извлечения эту информацию и обрабатывать ее и делать с ней все, что вам нужно (работает как вы). Это будет медленный вариант, но по крайней мере он будет делать то, что вы хотите.

Смежные вопросы