【问题标题】:Using onChange trigger on google sheets script在谷歌表格脚本上使用 onChange 触发器
【发布时间】:2017-08-18 10:41:20
【问题描述】:
我正在谷歌表格脚本编辑器中运行一个脚本,以触发我在当前项目的触发器中使用 onChange 的脚本,使用特定函数 -> 从电子表格 -> 更改。
值得一提的是,我与另外 3 个具有编辑权限且不时更改数据的成员一起使用工作表,我构建了脚本并激活了触发器。
当我更改工作表中的任何内容时,我会收到警报(触发器已打开),但当其他成员更改数据时,触发器不起作用。
我在这里错过了什么?
谢谢。
【问题讨论】:
标签:
google-apps-script
google-sheets
【解决方案1】:
每个人都需要一个触发器
您可以将触发器管理添加到程序中,以便他们的项目中也有触发器。 isTrigger() 函数确保您只为每个实例创建一个触发器。您可以找到文档here。
function myTriggerSetup()
{
if(!isTrigger('functionName'))
{
ScriptApp.newTrigger('functionName').forSpreadsheet('Spreadsheet').onChange().create();
}
}
function isTrigger(funcName)
{
var r=false;
if(funcName)
{
var allTriggers=ScriptApp.getProjectTriggers();
var allHandlers=[];
for(var i=0;i<allTriggers.length;i++)
{
allHandlers.push(allTriggers[i].getHandlerFunction());
}
if(allHandlers.indexOf(funcName)>-1)
{
r=true;
}
}
return r;
}