はじめに
以下の拙記事の続きとなります。トリガーの設定から保存に至るまでのプロセス及び編集、削除の方法について触れていますので、参照ください。
本稿は当方クライアント様への説明用に、内部文書として限定公開していたものを再編集したものとなります。1
トリガー設定における共通事項
誰がGASを実行したか、に関わらず、トリガーを設定したユーザーが、トリガーより実行されたGASの実行ユーザーとして扱われます。
そのため、原則として当該プロジェクトの管理者(もしくは管理用のアカウント)にてトリガー設定をして頂く必要がございます。
なお、エラー通知は管理者(トリガー設定者)へメールにて通知されますので、通知頻度は適宜設定していただくことになります。
時間主導型トリガーの設定プロセス
時間主導型トリガーについて
タイムドリブンやタイムトリガーと呼ぶ場合もあります。スプレッドシート、ドキュメント、フォーム、スライド、スタンドアロン型のものに適用可能です。
主に特定の日時に実行したい場合や毎日定時に実行するなど、定期的に自動実行させるために設定します。
特に特定の日時を設定する場合、こちらも拙記事ではございますが、念のため以下を参考に実行環境のタイムゾーン設定を確認、修正しておきましょう。
時間主導型トリガーの詳細設定画面
以下は時間主導型トリガー共通の詳細設定画面です。
イベントのソースを選択にて時間主導型を選択すると、新たに時間ベースのトリガーのタイプを選択項目が追加され、さらに選択したトリガーのタイプによって細かな設定が可能となります。現状、以下の6種類があります。
- 特定の日時
- 分ベースのタイマー
- 時間ベースのタイマー
- 日付ベースのタイマー
- 週ベースのタイマー
- 月ベースのタイマー
1. 特定の日時
指定した任意の日時に実行します。
①での日付の指定方法はYYYY-MM-DD HH:MM
形式となります。時間、分単位で細かく指定可能です。体感ですが、およそ1~2分の間で遅延することが多いです。
2. 分ベースのタイマー
○分ごとに実行したい、といった場合に設定します。
①の 時間の間隔を選択(分) にて分単位の間隔を指定します。1分おき、5分おき、10分おき、15分おき、30分おきに実行するよう設定可能です。トリガーが追加された時点からの起算となります。
なお、設定画面にて指定できる間隔は固定長となりますので、それ以外の間隔で実行したいといった場合は、GASからトリガーを生成し、追加する必要があります。
無料のアカウントではトリガーの総実行時間制限が90分/日であるため、理論上、1分おきでは平均して3.75秒で完結する必要があります。遅延発生も考慮すると、複数のトリガーを走らせている場合などは非現実的な設定となります。
なお、制限に引っかかりそうな場合は、実行時間帯を設定する、複数アカウントで別々にトリガーを設定する、有料アカウントにて運用する、といった選択肢を検討したほうが良いでしょう。
3. 時間ベースのタイマー
○時間ごとに実行したい、といった場合に設定します。
①の 時間の間隔を選択(時間) にて時間単位の間隔を指定します。1時間おき、2時間おき、4時間おき、6時間おき、8時間おき、12時間おきに実行するよう設定可能です。こちらもトリガーが追加された時点からの起算となります。体感ですが、およそ1~2分の間で遅延することが多いです。
分タイマー同様、設定画面にて指定できる間隔は固定長となりますので、それ以外の間隔で実行したいといった場合は、GASからトリガーを生成し、追加する必要があります。
4. 日付ベースのタイマー
毎日○時に実行したい、といった場合に設定します。
①の 時刻を選択にて実行したい時間帯(1時間単位)を指定します。指定した1時間の時間帯のなかで、かなりアバウトなタイミングで実行します。体感ですが、およそ15~30分の間で実行されることが多いです。
日付ベースのタイマー設定画面経由では、毎正時や○時半に実行させる、といったことはできません。この場合、GASからトリガーを生成し、追加する等の対応が必要となります。
5. 週ベースのタイマー
毎週1度だけ、特定の曜日の指定時間帯に実行したい場合に設定します。
①の 曜日を選択にて曜日を指定し、②の 時刻を選択にて指定した時間帯に実行します。日付ベース同様、かなりアバウトなタイミングで実行します。
6. 月ベースのタイマー
毎月決まった日にちの指定した時間帯で実行したい場合に設定します。
①の 日を選択にて日付を指定し、②の 時刻を選択にて指定した時間帯に実行します。日付ベース同様、かなりアバウトなタイミングで実行されます。
指定した日付がその月に存在しない場合は実行されません。具体的には31日を指定した場合、小の月には実行されません。この場合、GASにて次月の月末を算出した上でトリガーを追加するなどの対応が必要となります。
最後に
トリガーによる自動実行は便利ではありますが、エラー捕捉がし辛いこと、実行時の遅延など、デメリットもあります。私見ではありますが、即時性や精緻さ、厳密な時間管理を求めるならそもそもGASは不向きかと思います。2
これらを許容できる状況でしたら、積極的に活用し、定型業務を自動化するほうが遥かにメリットが大きいでしょう。
[参考・引用]
- Quotas for Google Services | Apps Script | Google Developers
- Class ClockTriggerBuilder | Apps Script | Google Developers
- [GAS] インストーラブルトリガーの設定方法など(1)~トリガーの追加から保存、編集、削除の基本プロセス
- [GAS] 簡単になったGAS実行環境のタイムゾーン設定