GASで作成した無効になったトリガーを削除する

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を実行し終えて無効になったトリガーを削除できます。

ちょっとだけ内容説明

処理の内容を簡単に説明すると以下のとおりです。

  1. ScriptApp.getProjectTriggers()で、実行アカウントが持っているトリガー一覧を取得する
  2. trigger.getHandlerFunction()でトリガーが実行するfunction名を取得し、削除したいものと一致するか判定
  3. trigger.isDisabled()で当該トリガーが無効になっているか判定(未実行トリガーを削除してはいけないため)
  4. ScriptApp.deleteTrigger(trigger)で不要な無効トリガーを削除

という感じです。

まとめ: 整理は大事

冒頭でも述べたとおり、すぐに悪影響が起きることはあまり考えにくいですが、不要なものが残るのはスマートでは無いです。

一番想像しやすいのはGASの棚卸し。

スクリプトの棚卸しでトリガーもチェックした際に、うんざりしますよね。

いらないものは早いうちに処理して、すっきりさせちゃいましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

都内Edtech企業のコーポレートエンジニア。
業務改善・自動化についての開発をしています。
エンジニア歴9年、コーポレートエンジニア歴4年。

目次