【问题标题】:How to check existing triggers on google appscript project?如何检查谷歌应用脚​​本项目上的现有触发器?
【发布时间】:2020-06-29 23:35:53
【问题描述】:

如何检查 google appscript 项目中现有的触发器?

例如。我有类似的代码...

var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('onFormSubmit').forSpreadsheet(ss).onFormSubmit().create();

function onFormSubmit(e) {
    do stuff
}

多次运行此代码每次都会生成一个新触发器。 有没有办法检查项目的现有触发器以查看我的 onFormSubmit 函数是否已链接到 onFormSubmit() 事件?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我总是在创建另一个可安装触发器之前调用这样的函数:

    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();
        }   
      }
    }
    

    【讨论】:

    • 查看“当前项目的触发器”页面时,我可以看到一个 onSubmit 触发器,但在代码中添加console.log(allTriggers) 时,我在日志中看到的只是[{}]。我在这里错过了什么吗?
    • 在这种情况下,我认为在日志中尝试查看Class Trigger的对象。例如,这可以通过Logger.log 看到。在这种情况下,Logger.log(allTriggers) 返回[Trigger]。这意味着 Trigger 的 Class 对象。使用console.log时,看不到Class对象的内容。所以看到了这样的输出。如果要查看内容,请使用类触发器的方法。 Ref
    • 谢谢。我认为您发布的 OP 问题答案解决了 OP 的问题。我认为赞成票。
    【解决方案2】:

    检查您现有的所有项目触发器

    var projectTriggers = ScriptApp.getProjectTriggers();   //returns a array
    for (var i=0; i<projectTriggers.length; i++){
     console.log("Your project Trigger handler functions "+projectTriggers[i].getHandlerFunction())
    }
    

    希望能帮到你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多