[GAS]n時間後に削除されるトリガーを作成する方法

2023.03.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • GASで定期実行を行う仕組みとしてトリガー機能があります。
  • そこで今回はn時間後に削除されるトリガーを作成する方法を記録いたします。

環境

  • mac OS Monterey 13.2
  • Google Apps Script

手順

スクリプトエディタ起動

  • Googleドライブを開き、新規で「Google Apps Script」を作成してスクリプトエディタを起動してください。

コード記述

  • 以下の内容をスクリプトエディタの任意のgsファイルに記述。
const targetTrigger = 'target'

function main() {
  // 1時間後に削除される「10分ごとに実行されるトリガー」を作成。
  createTrigger(targetTrigger, 10, 1);
}

// 対象トリガー
function target(){
  console.log('hello')
}

// トリガー作成
function createTrigger(name, minutes, hour){
  // n分ごとに実行されるトリガー設定
  ScriptApp.newTrigger(name).timeBased().everyMinutes(minutes).create();

  // n時間後に上記で設定したトリガーを削除する。
  // after(ミリ秒)を指定することで、ミリ秒後に1回だけ実行するトリガーの作成が可能。
  if(hour > 0){
    ScriptApp.newTrigger('deleteTrigger')
      .timeBased()
      .after(hour * 3.6e+6)
      .create();
  }
}

// 対象トリガーを削除する関数
function deleteTrigger(){
  const triggers = ScriptApp.getProjectTriggers();
  for(const trigger of triggers){
    if (trigger.getHandlerFunction() === targetTrigger) {
      ScriptApp.deleteTrigger(trigger);
    }    
  }
}

実行

  • 記述後、main関数を実行して以下のように「対象トリガー」及び「 トリガー削除トリガー」の2つができていることを確認します。

  • 確認して1時間後、再度トリガー設定を見て以下のように「対象トリガーの削除」及び「トリガー削除トリガーの無効化」となっていることを確認します。

  • 以上です。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。