【GAS】時間指定で毎日定期実行されるトリガーを設定する
やりたいこと
GASにおいて、指定した時間(hh:mm)に毎日実行されるようトリガーを設定したい。
しかしGUI上のトリガー設定では日付ベースのタイマーを使うことで「hh〜(hh+1)時」に実行するよう指定できるだけで、これだとその1時間の中でいつ実行するかは指定できない。
解決法
スクリプトを実行するたびにトリガーを削除・設定することで解決できる。
例として今回はこの関数を00:00に毎日実行させてみることにする。
1. トリガーの生成
トリガー生成用の関数を実装する。
runDate
に定期実行したい時間を指定- 毎日実行させたいので
day
には翌日を指定 - 00:00に実行したいので
hours
とminutes
はそれぞれ0
を指定
- 毎日実行させたいので
ScriptApp.newTrigger
の引数には実行したい関数名を指定
2. 旧トリガーの削除
このままだと毎日生成したトリガーが残り続けてしまうので、実行済みのものは削除する必要がある。
旧トリガー削除用の関数を実装する。
ScriptApp.getScriptTriggers()
で既存のトリガーを取得し、その中から対象のものを削除している。
3. トリガー関数を呼び出す
あとはメインとなる関数を実行する度にトリガー関数を実行すればOK。
もし平日のみに実行したい、という場合は下記の方法で実現できる。 【GAS】日本の休日・祝日をカレンダーから判定する
4. 初回実行のトリガー追加
今回実装したスクリプトを実行しなければトリガーは生成されないので、初回実行日の分は手動で設定する必要がある。
上記設定のトリガーを追加すれば完了。これで毎日00:00にmyFunction
が実行される。