14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-09-08

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

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

###参考

14
12
0

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
14
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?