google-apps-script - 如何检查谷歌 appscript 项目的现有触发器?
问题描述
如何检查谷歌 appscript 项目的现有触发器?
例如。我有类似的代码...
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('onFormSubmit').forSpreadsheet(ss).onFormSubmit().create();
function onFormSubmit(e) {
do stuff
}
多次运行此代码每次都会生成一个新触发器。有没有办法检查项目的现有触发器以查看我的 onFormSubmit 函数是否已经链接到 onFormSubmit() 事件?
解决方案
在创建另一个可安装触发器之前,我总是调用这样的函数:
function isTrigger(funcName){
var r=false;
if(funcName){
var allTriggers=ScriptApp.getProjectTriggers();
for (let i=0;i<allTriggers.length;i++){
if(funcName==allTriggers[i].getHandlerFunction()){
r=true;
break;
}
}
}
return r;
}
如此处所示:
function createOnEditTriggerForSpreadsheet() {
const ssid=SpreadsheetApp.getActive().getId();
const resp=SpreadsheetApp.getUi().prompt("Create On Edit Trigger", "Enter Function Name", SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
let funcname=resp.getResponseText();
if(!isTrigger(funcname)) {
ScriptApp.newTrigger(funcname).forSpreadsheet(ssid).onEdit().create();
}
}
}
推荐阅读
- c# - C# 在 for 循环期间检查取消令牌
- javascript - Discord.js - UnhandledPromiseRejectionWarning:RangeError [MESSAGE_NONCE_TYPE]:消息随机数必须适合无符号 64 位整数
- ios - 上传图片到服务器时出现绿线
- java - 需要有关 java 泛型问题的帮助
- python - Python RE:如何将文字分割为 0 次或多次 *
- firebase - 将数据传递到详细信息页面颤动
- wordpress - 标签过长时在子菜单中添加换行符
- c# - Unity collider touch 不作用于玩家
- python - 如何在 django 中使用 yolov5 模型
- scala - scala中有什么方法可以返回一个类型吗?