GoogleAppsScript

【GoogleAppsScript】通知時間を詳細に指定する

More than 1 year has passed since last update.

Google Apps Script の実行トリガーとして、時間指定を行なうことができます。
時間指定は、「1時間ごと」や「5時~6時の間」等の指定が行なえます。
しかし、「毎日12時05分」といった通知時間の指定を設定することができせん。
このような指定をしたい場合は、コード上でトリガーの指定をする必要があります。

毎日11時59分に処理を実行する

以下の作業が必要になります。

  • 11時59分に処理( main )を実行するようなトリガーを設定する関数( setTriger )をコード上で作成する
  • mainの処理の中で、setTrigerにて設定したトリガーを削除するコードを書く
  • デフォルトのトリガー設定にて、「日タイマー:10時~11時」でsetTrigerが動くようにする

上記のようにすることで、毎日10時~11時の間に、setTrigerが実行され、setTrigerによってその日の11時59分にmainが実行されるよう設定され、11時59分にmainが実行されます。
mainが実行されると、11時59分に実施するよう設定したトリガーが削除され、そのほかの処理も実行されます。
(トリガーは削除しないと残ってしまいます)

以下、実際のコードです。

// 11時59分にトリガーを設定する関数
function setTrigger() {
  var day = new Date();
  day.setHours(11);
  day.setMinutes(59);
  ScriptApp.newTrigger("main").timeBased().at(day).create();
}

// トリガーを除去する関数
function removeTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == "main") {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

// 実際に動かしたい処理
function main() {
  removeTrigger(); //トリガーを除去する
  //実行したい処理
}

以下、Google Apps Script のデフォルトのトリガー設定です。
trigger.PNG

トリガーは、Google Apps Script 画面上部の時計マークから設定可能です。
tokei.PNG

上記の例では、毎日特定の時間に処理を実行させましたが、他にも、「〇日おきに実行」や「〇月〇日〇時〇分に実行」など、さまざまなパターンで設定できます。

参考