はじめに
こんにちは。いきものがかりのボーカルの吉岡聖恵さんのフォトエッセイの発売が発表されて、発狂しました、筆者です
GoogleAppsScriptのトリガー便利ですよね。
サーバレスで定時(?)実行が可能です。
ただ、日次でのトリガーでは、1時間の間のどこかで実行される曖昧性を持っているため、毎日10:00ぴったりにslack botでつぶやきたいんだ!というのは、そのままではできないのが悲しいところです
しかしながら、ぴったりに行いたい処理もあるのが現実です。
よし!ではぴったりに実行しよう!
GoogleAppsScriptのトリガーを10:00ジャストに発動させる
以下の手順で行います。
1. 10:00に発動したい関数を作成.
const main = () => {
console.log('Hello World!')
// 指定日時実行のトリガーは、終了後、無効なトリガーとして残り続けるので削除しておく.
const triggers = ScriptApp.getProjectTriggers()
for (let i in triggers) {
if ('main' == triggers[i].getHandlerFunction()) {
ScriptApp.deleteTrigger(triggers[i])
}
}
}
2. 10:00にトリガーをセットする関数を作成.
const setTrigger = () => {
const date = new Date()
ScriptApp.newTrigger('main')
.timeBased()
.at(new Date(date.getFullYear(), date.getMonth(), date.getDate(), 10, 0, 0))
.create()
}
3. 1の関数を毎日9時台にトリガーセットする
おわりに
内部的には、毎日10時に発動するトリガーをセットしているのですが、こうすることで、10時ジャストに毎日スクリプトを走らせることができます
また、発動したトリガーは残り続けるので、削除しておくことをおすすめします。
トリガーを設定できる上限値に達したときにエラー吐きますので...
それでは!