Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@chihiro

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

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

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

参考

11
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
11
Help us understand the problem. What is going on with this article?