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


トリガー削除
みなさんこんにちは!
うえはら(@tifoso_str)です。

前回は毎日決まった時刻にスクリプトを実行するトリガー設定についてお伝えしました。

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

ですが、作成したsetTriggerスクリプトで「myFunction」を呼び出すトリガーが毎日作成されます。

トリガーは実行されても、そのまま残るので毎日増えていくことになります。

削除されていないトリガー

11:05と11:15に「myFunction」を呼び出したトリガーですが、19:30でもそのまま残っています。

そこで今回は、myFunctionを実行するときに、使用済みのトリガーを削除する方法をお伝えします。

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

それでは、指定のトリガーを削除するスクリプトをご紹介します。

下記スクリプトを実行すると、myFunctionを呼び出すトリガーを削除します。

流れとしては

1. プロジェクトに関連付けられている全てのトリガーを取得
2. 指定のトリガーか判定
3. トリガーの削除

このようになるので、一つずつ解説していきます。

トリガーの取得

まずは、プロジェクトに関連付けられている全てのトリガーを取得します。

トリガーの取得にはScriptAppクラスのgetProjectTriggersメソッドを使用します。

ScriptApp.getProjectTriggers()

getProjectTriggersメソッドの戻り値はTriggerオブジェクトの配列となっているので、2行目で取得した全てのトリガーを配列triggersに代入しています。

指定のトリガーか判定

削除したい指定のトリガーは「myFunction」を呼び出すトリガーです。

削除するトリガー

トリガーが呼び出す(実行する)ファンクション名を確認する為に、TriggerクラスのgetHandlerFunctionメソッドを利用します。

Triggerオブジェクト.getHandlerFunction()

getHandlerFunctionメソッドの戻り値はファンクション名なので、if文を利用して、取得したファンクション名が「myFunction」か判定し、同じであれば次のトリガー削除に進みます。

トリガーの削除

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

ScriptApp.deleteTrigger()

for文とif文を利用して、取得したファンクション名が「myFunction」かの判定を、配列の先頭から配列の長さの回数だけ繰り返し処理します。

これで、毎日setTriggerを呼び出すトリガーは削除されずに、setTriggerで作成したトリガーだけが削除されます。

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

毎日指定時刻に実行するスクリプトが呼び出された瞬間、その呼び出したトリガーは不要となります。

今回呼び出されるのは「myFunction」なので、この中の実行したい処理の前でdelTriggerを呼び出して、トリガーを削除します。

まとめ

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

前回の毎日決まった時刻にスクリプトを実行するトリガー設定と併せて使用することで、メニューからでは設定できない内容でも、自由にトリガー設定できるようになります。

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

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

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

The following two tabs change content below.
独学でプログラムを勉強しているノンプログラマーです。 名前から連想されるように沖縄在住ですが、うちなんちゅ~ではありません。 パソコンにできることはパソコンにさせよう!をモットーに日々の業務に取り組んでいます。

コメント