Reputation: 4159
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
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
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