Google Apps Scriptで使用済みのトリガーを削除する方法


トリガー削除

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASのスクリプトからトリガーを操作する方法をシリーズでお伝えしています。

前回は、毎日決まった時刻に実行するトリガーの設置の方法についてお伝えしました。

Google Apps Script で毎日決まった時刻にスクリプトを実行するトリガー設定
Google Apps Scriptのトリガー設定は毎日実行する場合は、午前8時~9時のように1時間の幅があります。また、時間を細かく指定するには、2018年2月16日08:30のように日にちも設定する必要があります。 この二つを使用して、毎日指定した時間にスクリプトを実行させるトリガーを設定します。

しかし、このままでは毎日トリガーが設置されるので、どんどん増えていってしまうんですね…ということは、「トリガーの削除」が必要なのです。

ということで、今回はGoogle Apps Scriptで使用済みのトリガーを削除する方法をお伝えします。

では、行ってみましょう!

前回のおさらい

前回作成したコードはこちらです。

実行した日の23:59に「myFunction」を動作させるトリガーを設定するというものです。

この関数setTriggerを、日付ベースのトリガーに設定することで、毎日決まった時刻にmyFunctionを実行させることができるわけです。

しかし、関数setTriggerにより、毎日トリガーが設定されるので、気がつくと以下のようにどんどんと使用済みのトリガーが増えていってしまいます。

使用済みのトリガーが増えていく

ですから、これらのトリガーを都度削除するという処理が必要になってきます。

指定のトリガーを削除するスクリプト

指定のトリガーを削除するスクリプトはこちらです。

流れとしては以下のとおりです。

  1. 現在のプロジェクトのトリガーすべてを配列で取得
  2. 配列をループし、指定の関数名がセットされているトリガーかどうかを判定
  3. 該当のトリガーを削除

現在のプロジェクトのすべてのトリガーを取得

まず、現在のプロジェクトのすべてのトリガーを取得します。

ScriptAppクラスのgetProjectTriggersメソッドを使用します。

ScriptApp.getProjectTriggers()

getProjectTriggersメソッドの戻り値はTriggerオブジェクトの配列です。

指定の関数名かどうかを判定する

for…of文でトリガーの配列についてループを行い、トリガーに設定されている関数が「myFunction」かどうかを判定します。

トリガーに設定されている関数名を取得するには、TriggerクラスのgetHandlerFunctionメソッドを使用します。

Triggerオブジェクト.getHandlerFunction()

getHandlerFunctionメソッドは関数名を文字列で返しますので、if文で「myFunction」かどうかを判定することができます。

トリガーの削除

トリガーの削除にはScriptAppクラスのdeleteTriggerメソッドを使用します。

ScriptApp.deleteTrigger(トリガー)

引数の「トリガー」には削除するTriggerオブジェクトを指定します。

トリガーを削除するスクリプトを呼び出す

毎日指定時刻に実行する関数(ここでは「myFunction」)が呼び出されたら、その呼び出したトリガーは不要となります。

なので、関数myFunctionの中でdelTriggerを呼び出して、トリガーを削除すればよいのです。

実際に、関数delTriggerが実行されると、たくさんたまっていた「myFunction」のトリガーがすべて削除されました。

不要なトリガーが削除された

まとめ

今回は、Google Apps Scriptで指定のトリガーを削除する方法をお伝えしました。

前回の毎日決まった時刻にスクリプトを実行するトリガー設定と併せて使用することで、余計なトリガーを増やさなくて済みますね。

次回は、休みの日はゆっくりしたい!ということで、平日のみトリガーを作成する方法をお伝えします。

どうぞお楽しみに!

連載目次:GASのスクリプトからトリガーを操作する方法

GASのトリガーはメニューから設定する以外に、スクリプトからも設置や削除が行えます。本シリーズでは、ScriptAppsサービスを使ったトリガーの操作方法についてお伝えしていきます。
  1. Google Apps Scriptで毎日決まった時刻にスクリプトを実行するトリガー設定
  2. Google Apps Scriptで使用済みのトリガーを削除する方法
  3. Google Apps Scriptで営業日を判定してトリガーを作成する方法

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

タイトルとURLをコピーしました