lampShadesDrifter
lampShadesDrifter

Reputation: 4159

How to check existing triggers on google appscript project?

How to check existing triggers on google appscript project?

Eg. I have code like...

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

function onFormSubmit(e) {
    do stuff
}

Running this code multiple times generates a new trigger each time. Is there a way to check existing triggers for a project to see if my onFormSubmit function is already linked to the onFormSubmit() event?

Upvotes: 0

Views: 935

Answers (2)

Bhupesh Kumar
Bhupesh Kumar

Reputation: 256

Check all your existing projects triggers

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

Hope I could helped you

Upvotes: 0

Cooper
Cooper

Reputation: 64130

I always call a function like this before creating another installable trigger:

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

As shown here:

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

Upvotes: 4

Related Questions