如何通过触发的函数名称而不是triggerarray id以编程方式删除Google Apps脚本基于时间的触发器?
我正在创建一个触发器,稍后我想按名称删除触发器 . 我试过这个:
ScriptApp.deleteTrigger("myfunction");
但它不起作用 . 我不想使用这种方法:
var triggers = ScriptApp.getProjectTriggers();
ScriptApp.deleteTrigger(triggers[0]);
由于我同时有多个触发器,可能会删除错误的触发器!那么如何通过名称而不是触发器数组ID来删除触发器?
function demo(){
ScriptApp.newTrigger("myfunction")
.timeBased()
.everyMinutes(1)
.create();
}
function myfunction(){
// do some stuff here then stop the trigger by name
ScriptApp.deleteTrigger("myfunction");
}
}
4 回答
循环遍历触发器,搜索处理程序函数上的任何匹配项,然后删除它们 .
虽然OP只提到了一个触发器,但是多个触发器可能会针对相同的处理函数,因此以下代码段可以满足单个和多个匹配 .
请参阅ScriptApp和Trigger上的文档 .
根据 Bryan P 的答案,但有代码 .
如果循环遍历所有触发器,则可以使用以下命令访问处理函数名称:
......如shown in the docs .
@code-guy
From Docs
转到编辑>当前项目触发器 . 这是存储和管理所有触发器的地方 . handlerFunction反映了“当前项目的触发器”中的“运行”名称 . 谷歌在我的经验中混合了这些,所以你必须循环,通过handlerFunction找到触发器,然后删除 . 如果您有多个具有相同“运行”名称的触发器,则可能需要打破循环并获得更多创意 . 但以下对我有用 .