【GAS】毎日同じ時間に関数を実行する方法①

こんにちは、4号です。

最近、初代を「さすがっすねぇ」と褒めるのですが、言い方が薄っぺらいと言われました。
悔しいです。

本題に入りましょう。
ある日、3号に「定時10分前になったら進捗入力のリマインド通知をチャットに送ってほしい」と頼まれました。
チャットに通知させる関数をトリガー設定すれば終わるじゃんと高を括っていたら痛い目に遭いました…

そうです、GASのトリガーでは毎日同じ時間に実行することができないんです。

一応それっぽいトリガーはいくつかありまして、
一つは、「日付ベースのタイマー」というトリガーで、毎日関数を実行させることはできるのですが、時刻の選択が「8時〜9時」や「16時〜17時」といった選択肢しかなく、実行する時間にブレが出ちゃうんですよね。
もう一つは、「特定の日時」というトリガーで、○○時○○分まで指定できるのですが、指定したその日その時間にしか動かないので、毎日設定しなければなりません。

しかし、実はこの二つを組み合わせれば毎日同じ時間に関数を実行することが可能になっちゃうんですよね〜

まず前提として、GASには”ScriptApp”というクラスが用意されていて、これを使うことでスクリプトからトリガーを作成することができます。

ScriptApp.newTrigger(“《関数名》”).timeBased().at(“《日時》”).create();

上のスクリプトは「newTriggerに指定した関数をatに指定した日時に動かすトリガーを作成する」というものになります。

これを応用するとこうなります。

サンプルスクリプトはこちら

今日の日付と動かしたい時間を入れた日付データを《日時》の部分に指定する

その式を関数に入れる

その関数を「日付ベースのタイマー」というトリガーで毎日動かす

こうすることで、
「特定の日時」で〇〇時〇〇分まで指定したトリガーを自動で毎日設定することができるようになります。

しかしこの方法だと、一日一個トリガーが作成されるので、トリガーが溜まっていってしまいますねぇ…
というわけで次回はトリガー削除編をやろうかなと思います。
乞うご期待!

【GAS】毎日同じ時間に関数を実行する方法②

さらに詳しく聞きたい!という方は是非下のボタンからお問い合わせください!

野村 航平

高専でC・Java、プログラミングスクールにてRuby・JavaScript・SQL・AWSなどを学習後、現在のヒカリシステムに入社。
木下さんの弟子をやらせてもらっています。

関連記事