【发布时间】:2014-01-19 15:56:51
【问题描述】:
我写了一个脚本来做各种事情,这个脚本的一部分是安装一个触发器:
function setTrigger() {
var ss = SpreadsheetApp.getActive();
var triggers = ScriptApp.getProjectTriggers();
Logger.log('Amount of triggers ' +triggers.length);
var j = 0;
for (var i = 0 ; i < triggers.length;i++){
if(triggers[i].getHandlerFunction() == 'getNotes' ){j++;}
}
Logger.log('Amount of matching triggers ' +j);
if(j == 0 ){ScriptApp.newTrigger("getNotes").forSpreadsheet(ss).onFormSubmit().create();}
}
这是我遇到的问题。
以上代码在onOpen() 触发器中调用。
当我打开工作表并检查日志时,我的触发器没有安装,我收到以下消息。
执行失败:您无权调用 getProjectTriggers
当我手动运行onOpen() 时。触发器已安装。
我目前拥有该电子表格,但理想情况下,我想与人们分享它,并且触发器安装和工作。
任何想法如何通过在onOpen 中调用项目触发器来解决此错误?
【问题讨论】:
-
当您说“上面的代码在 onOpen() 触发器中被调用”时,您是指一个名为“onOpen”的函数还是您为其安装了触发器并在 open 上运行的函数?请看一下这个文档:developers.google.com/apps-script/…
-
@Sergeinsas 感谢您的回复和链接。我已使用此链接中的一些信息来构建我的脚本。我的意思是我已经按照链接说明在脚本顶部创建了一个名为 onOpen() 的函数。它建立一个菜单,然后检查触发器,如果没有找到它应该安装它。这是 onOpen() 代码,我想我应该首先包含它。 jsfiddle.net/8gU9m
标签: google-apps-script google-sheets triggers