Google apps script onEdit能否以编程方式创建触发器?
我编写了一个简单的脚本,试图通过编程从onEdit函数创建一个脚本Google apps script onEdit能否以编程方式创建触发器?,google-apps-script,Google Apps Script,我编写了一个简单的脚本,试图通过编程从onEdit函数创建一个脚本 function onEdit() { test(); } function test() { triggerLater(); } function customMsgBox() { Browser.msgBox("hello world"); } function triggerLater() { var date = new Date(); date.setMinutes(date.getMinut
function onEdit() {
test();
}
function test() {
triggerLater();
}
function customMsgBox() {
Browser.msgBox("hello world");
}
function triggerLater() {
var date = new Date();
date.setMinutes(date.getMinutes() + 1);
try {
var oneTimeOnly = ScriptApp.newTrigger("customMsgBox")
.timeBased()
.at(date)
.create();
return oneTimeOnly.getUniqueId();
}
catch (e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.toast("error");
}
}
如果我尝试从脚本编辑器运行OneEdit,则会创建触发器,但电子表格上的每一次编辑都会在toast中得到一条“错误”消息
有人能帮我理解吗?简单事件处理程序函数的权限有限(即它不能发送电子邮件、打开日历等)。因为它在没有用户权限的情况下运行。因此,它不能设置触发器(没有任何限制,这将是一个巨大的安全漏洞)
如果您希望在您的帐户下创建触发器,请使用可安装的编辑触发器。首先,将onEdit函数重命名为其他函数(这样它就不会作为简单的事件处理程序触发),然后转到“资源”菜单,选择要在电子表格编辑事件上运行的函数。更多信息,请查看。我希望我发现了一个漏洞:我尝试阅读文档,但找不到与以编程方式创建触发器的限制相关的内容。。。我错过了,或者是文档中缺少了?没有关于触发器创建的具体信息。但是关于简单事件处理程序的第三个要点说,任何需要用户授权的事情都不能做,包括它。很明显,您不应该能够从有限的代码中触发特权代码。这将是一个巨大的安全问题。我知道这可能是一个巨大的安全问题。。。我尝试是因为没有关于。。。非常感谢;)安全页面上有特定信息,其中显示“简单事件,如onOpen、OneEdit和onInstall,以操作电子表格的用户的身份执行。可安装事件(电子表格触发器)以创建触发器的用户的身份执行。”仅供参考,如果您在变量“e”中设置了值您将能够看到确切的错误消息。