google-apps-script - 如何在所有 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);
}
}
}
}
解决方案
您应该将触发器创建部分放在 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!");
}
推荐阅读
- javascript - 如何用 algebra.js 求解线性方程?
- angular - NGX无限滚动不起作用
- mysql - 订单的 mySql 触发器
- c - Difference between the two implementions of strStr()
- jquery - jquery-3.2.1.SLIM.min.js TypeError: self.$dropdown_content.stop is not a function
- csv - 从 awk 解析文件时发生错误
- java - 如何将响应式 imageView 设置为所有尺寸?
- r - Shiny 应用程序在 Shiny 服务器上的运行速度比在本地运行时慢得多
- react-native - 在 WebStorm 中使用 React Native 为调试器附加 Chrome 浏览器时出现问题
- angular - Angular Injectable 装饰器 - 预期 0 个参数,但得到 1 个