首页 > 解决方案 > 如何在所有 GSuite 用户中部署 Google Apps 脚本?

问题描述

下面的脚本供参考。

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

部署为“Web App”,允许我将使用限制为我的域,但似乎需要一个“doGet”函数(即使我的脚本不使用一个 - 因此顶部的空白行),但我可以不知道如何在 GSuite 用户中部署它

文档似乎建议我可以在“Chrome 网上应用店”中进行部署,然后将其添加给所有用户——但我希望这对我的域来说是私有的,而不是公开可用的。

我确信这是可能的,但只是无法从文档中解决如何处理它。

谢谢

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);
      }
    }
  }  
}

标签: google-apps-scriptdeploymentgoogle-workspace

解决方案


您应该将触发器创建部分放在 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!");

}

推荐阅读