我编写了一个简单的脚本,试图以编程方式从 onEdit 函数创建脚本
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");
}
}
如果我尝试从脚本编辑器运行 onEdit,则会创建触发器,但电子表格上的每次编辑都会在 toast 中收到一条“错误”消息
有人可以帮我理解吗?
最佳答案
onEdit
简单事件处理函数具有有限的权限(即它不能发送电子邮件、打开日历等)。因为它在没有用户权限的情况下运行。因此,它不能设置触发器(没有任何限制,会是一个巨大的安全漏洞)。
如果您希望在您的帐户下创建触发器,请使用可安装的编辑触发器。首先,将 onEdit 函数重命名为其他名称(这样它就不会作为简单的事件处理程序触发),然后转到“资源”菜单并选择要在电子表格编辑事件上运行的函数。看看docs了解更多。
关于google-apps-script - onEdit 可以以编程方式创建触发器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736454/