Запуск Google Apps Script по электронной почте

Я ищу примеры шаблона, в котором демон script, работающий в домене GoogleAppsForBusiness, может анализировать входящие сообщения электронной почты. Некоторые сообщения будут содержать вызов еще одного GAScript, который мог бы, например, изменить настройку ACL для определенного документа.

Я предполагаю, что кто-то еще уже реализовал этот шаблон, но не уверен, как я могу найти примеры.

ТНХ

Ответы

Ответ 1

Примеры script можно найти в приложении script и руководства. Вы также можете найти соответствующие обсуждения на forum. Но я не думаю, что там, который подходит вам точно, весь код там наверняка, но не на одном script.

Возможно, кто-то написал такой script и никогда не публиковал его. Так как это несколько просто, и все используют разные. Например, как вы планируете отмечать свои электронные письма (те, которые вы уже прочитали, выполнили и т.д.)? Может быть, полезно использовать фильтр gmail, чтобы помочь вам, сразу же поместив "командную" электронную почту на ярлык, а script просто удалите ярлык (и, возможно, установите другой). Точка, посмотрите, как она может сильно различаться.

Кроме того, я считаю, что легче сохранить все функции в одном проекте script. Возможно, просто на разных файлах. Как вызов различных сценариев является более сложным.

В любом случае, он как бы начал:

//set a time-driven trigger to run this function on the desired frequency
function monitorEmails() {
  var label = GmailApp.getUserLabelByName('command');
  var doneLabel = GmailApp.getUserLabelByName('executed');
  var cmds = label.getThreads();
  var max = Math.min(cmds.length,5);
  for( var i = 0; i < max; ++i ) {
    var email = cmds[i].getMessages()[0];
    var functionName = email.getBody();
    //you may need to do extra parsing here, depending on your usage

    var ret = undefined;
    try {
      ret = this[functionName]();
    } catch(err) {
      ret = err;
    }
    //replying the function return value to the email
    //this may make sense or not
    if( ret !== undefined )
      email.reply(ret);
    cmds[i].removeLabel(label).addLabel(doneLabel);
  }
}

ps: Я не тестировал этот код

Ответ 2

Вы можете создать приложение Google, которое будет инициировано входящим электронным сообщением, отправленным на специальный адрес для приложения. Сообщение преобразуется в HTTP POST, который получает ваше приложение.

Подробнее здесь: https://developers.google.com/appengine/docs/python/mail/receivingmail

Я еще не пробовал это, но сделаю это в ближайшие несколько дней.

Ответ 3

Есть два пути. Сначала вы можете использовать Google pub/sub и обрабатывать входящие уведомления в конечной точке AppScrit. Второй - использовать пакет googleapis npm внутри вашего кода AppScript пример здесь. Надеюсь, что это поможет.

Это следующие шаги:

  • сделал проект https://console.cloud.google.com/cloudpubsub/topicList?project=testmabs вещь?
  • создал тему для pubsub
  • сделал подписку на URL-адрес webhook
  • добавил, что URL-адрес сайтов, которые я владею, я думаю? Я думаю, что мне пришлось делать DNS-объекты, чтобы подтвердить, что я их обладаю, и ошибка была слишком расплывчатой, чтобы понять, что это было то, что я должен был сделать, пытаясь добавить подписку
  • добавлено разрешение на тему "[email protected]" в качестве издателя (я также добавил... apps.googleusercontent.com и [email protected], но я не думаю, что я нуждались в них)
  • создала информацию о клиентах oauth и загрузила ее в раздел учетных данных консоли Google. (Oauthtrash.json)