google-apps-script - 创建和管理某人的触发器 (GAS) 的最佳方式
问题描述
我为一个人写了一些 GAS 代码,它需要一个触发器。
我创建了这条线,并要求这个人调用它来设置他的触发器(因为它是他的电子表格):
ScriptApp.newTrigger("myFunction").timeBased().everyDays(1).inTimezone("Australia/Brisbane").atHour(5).create()
但是,我看不到他的扳机。
要查看是否有触发器,我使用了:
Logger.log(ScriptApp.getProjectTriggers())
它返回了一个空数组,所以看起来触发器不见了,但我没有看到它物理...
所以,如果是客户,问他“请设置你的触发器”然后看不到它然后要求检查它是否在那里是不酷的。
为客户设置和管理触发器的最佳方式是什么?
解决方案
编辑:如接受的答案所述,似乎其他用户的触发器可以在仪表板中手动查看。
出于安全原因,您无法以编程方式/手动方式查看其他用户的触发器。
我创建了这条线,并要求这个人调用它来设置他的触发器(因为它是他的电子表格):
您必须显式创建一个菜单,以便用户可以单击它来创建触发器:
如果用户通过菜单选项设置触发器,您可以将触发器的 id 设置为属性服务,如下所示。
function createTrigger(){ //to be linked to a "Create Trigger" menu
// Creates an edit trigger for a spreadsheet identified by ID.
var tid = ScriptApp.newTrigger('myFunion')
.forSpreadsheet('1234567890abcdefghijklmnopqc3')
.onEdit()
.create()
.getUniqueId();
//set id of trigger in properties
PropertiesService
.getScriptProperties() //if you want public access to trigger(If not use getUserProperties)
.setProperty(
Session.getEffectiveUser().getEmail() ||
('user1 ' + Math.random().toFixed(3)),
tid
);
//Inform user: trigger created successfully.
SpreadsheetApp.getActive().toast('Trigger created successfully with id: ' + tid);
//@see https://script.google.com/home/triggers
}
推荐阅读
- swift - Swift 到 Kotlin:协议到接口,带有泛型
- matlab - 每次程序执行时如何在MATLAB中的下一列中将数据写入excel,并将先前的结果保存在先前的列中
- reactjs - “位于 chrome-extension://myextensionid/ 的网页可能暂时关闭,或者它可能已永久移动到新网址。ERR_UNEXPECTED”
- android - 从多个片段中的活动按钮获取点击次数
- java - Vaadin-8 ComboBox 点击没有效果
- cassandra - ConfigurationException:触发器类“org.apache.cassandra.triggers.AuditTrigger”不存在
- php - Laravel 迁移停止并且不执行任何操作
- c# - c# - 如何使用 LINQ 从列表中删除重复 X 次的元素?
- codeigniter-3 - 使用 CodeIgniter 3 的 PHP 启动错误
- python - 如何从站点地图中加载每个网址并抓取更多数据