GASの処理内でトリガーを作成することってありますよね。
こんなん。
ScriptApp.newTrigger('function_name').timeBased().after(60000).create(); //1分(60000ms)後に起動する
そこで一点ネックになるのが、
処理が完了したトリガーが無効になっていっぱい残る件
すぐに何か悪影響が起こるわけではないのですが、管理するうえで目障りですし、使わないのであれば無いに越したことはない。
ということで、パパッと削除できるようにスクリプトを作成しました。
目次
実際のスクリプト
function deleteCompletedTrigger(){
let triggers = ScriptApp.getProjectTriggers();
for(let trigger of triggers){
if(trigger.getHandlerFunction() === "function_name" || trigger.isDisabled()){
ScriptApp.deleteTrigger(trigger)
}
}
}
これでfunction_nameを実行し終えて無効になったトリガーを削除できます。
ちょっとだけ内容説明
処理の内容を簡単に説明すると以下のとおりです。
- ScriptApp.getProjectTriggers()で、実行アカウントが持っているトリガー一覧を取得する
- trigger.getHandlerFunction()でトリガーが実行するfunction名を取得し、削除したいものと一致するか判定
- trigger.isDisabled()で当該トリガーが無効になっているか判定(未実行トリガーを削除してはいけないため)
- ScriptApp.deleteTrigger(trigger)で不要な無効トリガーを削除
という感じです。
まとめ: 整理は大事
冒頭でも述べたとおり、すぐに悪影響が起きることはあまり考えにくいですが、不要なものが残るのはスマートでは無いです。
一番想像しやすいのはGASの棚卸し。
スクリプトの棚卸しでトリガーもチェックした際に、うんざりしますよね。
いらないものは早いうちに処理して、すっきりさせちゃいましょう。