问题
I have an installable trigger that should supposed to created once. But I found out that some of my coworkers have rerun my code and recreated another 3 triggers that exactly the same with it. I felt so silly that I didn't add any conditional statement of that...
Anyway, now I want to delete these extra triggers. But I cannot find the delete/edit button on the console UI of the GAS project. And I've also tried ScriptApp.getProjectTriggers()
, but it still list the triggers of the project that only owned by me.
How can I delete these extra triggers that created by others (owned by other users)? Or can I restart my project from a clean start again?
回答1:
In addition to @Alan Wells comment - no you definitely cannot. What you can do, though, is make your users run a remover function on their behalf with something like this (if your script is container-bound, add it to onOpen()
trigger if you have one, or to any other function that you expect to be called by others):
function deleteAllTriggers() {
var ts = ScriptApp.getProjectTriggers();
ts.forEach(function(trigger){
var handlerName = trigger.getHandlerFunction();
if(handlerName === 'yourFunctionName') { //check if you are deleting target trigger;
ScriptApp.deleteTrigger(trigger);
Utilities.sleep(1000); //wait (in this sample 1s) to avoid "too many times" error;
}
});
}
ES6-style:
const deleteAllTriggers = () => {
const triggers = ScriptApp.getProjectTriggers();
triggers.forEach((trigger) => ScriptApp.deleteTrigger(trigger));
};
来源:https://stackoverflow.com/questions/56507537/how-to-delete-triggers-that-own-by-other-users-in-google-apps-script