LoginSignup
0

GASで時間指定でイベントを発火させる方法について

Last updated at Posted at 2023-11-22

GASで時間指定でイベントを発火させる方法について

スプレッドシートに記載したタスクリストを取得し、ステータスが「未着手」「処理中」のタスクをSlackのメッセージで指定時間に送付するアプリをGASで書きたい時に、「○時○分」と時間指定ぴったりに送付させる方法について記載します。

前提

まずはGASでイベント発火を設定する方法について説明します。
キャプチャ0.PNG

  • 左側にあるサイドメニューから目覚まし時計のマーク(トリガー)をクリックする。

  • 右下にある「トリガーを追加」ボタンをクリックする。
    キャプチャ1.PNG

  • 実行する関数を選択の項目で「実行したい関数」を選択する。

  • 時間ベースのトリガーのタイプを選択の項目で「日付ベースのタイマー」を選択する。

  • 時刻を選択する項目で「実行したい時刻」を選択する。

問題

GASで用意されているトリガーは1時間単位でしか指定できないので、上記の例だと9時00分から9時59分の間に実行されてしまう。

例えば9時30分ちょうどにメッセージを送信したい……というような、時間指定ができない。

解決策

  • 指定の1時間内に実行される用の関数を作成する。
  • 作成した関数の中で下記の処理を書く。
    • 指定する時刻をセットする
    • 新規トリガーの設定と実際に行いたい処理(メッセージを送付するための関数)
// トリガー設定
function execute(){
  // 実行時刻格納用の定数
  const date = new Date();

  // 実行したい時刻を指定する
 // setHoursで時間を指定する
  date.setHours(09);
 // setMinutesで分を指定する
  date.setMinutes(30);

  // 新規トリガーの設定
 // slackにメッセージを送信するための関数を指定する
  ScriptApp.newTrigger('mainFunction').timeBased().at(date).create();
}

GAS内で新規トリガーを作成する構文に下記を代入する。

ScriptApp.newTrigger('関数名').timeBased().at(時刻をしていた変数).create();

ポイント
GASのトリガーは実行したい時間より早い時間を設定しておく。
9時30分にメッセージを送信したい場合、午前8~9時など指定時間より早い時間帯を指定する。
理由
例えば午前9~10時を指定してしまうと、9時45分にトリガーが実行されてしまう可能性があるので、早めの時間帯を設定する必要があるから。

キャプチャ2.PNG

無事に指定した時刻にメッセージが送信されました!

今回は例としてスプレッドシートの内容をSlackにメッセージを送信してみましたが、GASのイベント発火全般に利用できるので是非お試しください!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0