如何在所有GSuite用户之间部署Google Apps脚本?

时间:2019-06-05 08:56:04

标签: google-apps-script deployment gsuite

下面的脚本可供参考。

我创建了一个脚本,该脚本将所有带标签的电子邮件转发到文件帐户。我想将此部署到我域中的所有GSuite用户-但是我不知道这样做的过程。

作为“ Web应用程序”进行部署,允许我将使用限制为仅用于我的域,但是似乎需要一个“ doGet”功能(即使我的脚本不使用一个功能-因此顶部是空白行),但是那么我就无法确定如何在GSuite用户之间进行部署

文档似乎建议我可以在“ Chrome Web Store”中进行部署,然后将其添加到所有用户-但我希望此域对我的域私有,而不是公开提供。

我敢肯定这是可能的,但只是无法从文档中找到解决方法。

谢谢

function doGet(e){return ContentService.createTextOutput("")}

var triggers = ScriptApp.getProjectTriggers();
 for (var i = 0; i < triggers.length; i++) {
   ScriptApp.deleteTrigger(triggers[i]);
 }

ScriptApp.newTrigger("autoForward")
  .timeBased()
  .everyMinutes(5)
  .create();

function autoForward() {

  var recipient = 'file@domain.co.uk';

  var labels = GmailApp.getUserLabels();

  for (var i = 0; i < labels.length; i++) {

    if(labels[i].getName().indexOf("Clients/")>-1){ 

      var threads = GmailApp.search('label:' + labels[i].getName() + ' NOT label:filed');

      var label = GmailApp.getUserLabelByName("filed");

      for (var j = 0; j < threads.length; j++) {
        var messages = threads[j].getMessages();
        messages[messages.length - 1].forward(recipient,{name: labels[i].getName()});
        threads[j].addLabel(label);
      }
    }
  }  
}

1 个答案:

答案 0 :(得分:1)

您应该将触发器创建部分放在doGet函数中。然后将此脚本发布为Web应用程序,以便只有您域中的用户才能访问此Web应用程序。

现在与您域中的用户共享Web应用程序的URL,他们可以在Web浏览器中打开URL,使用其Google帐户进行授权,脚本会将其电子邮件转发给预期的收件人。

function doGet() {

 var triggers = ScriptApp.getProjectTriggers();
 for (var i = 0; i < triggers.length; i++) {
   ScriptApp.deleteTrigger(triggers[i]);
 }

 ScriptApp.newTrigger("autoForward").timeBased().everyMinutes(5).create();

 return ContentService.createTextOutput("Script setup complete!");

}