Help us understand the problem. What is going on with this article?

Google Apps Scriptの日毎のトリガーで時間をもっと細かく設定する

More than 1 year has passed since last update.

Googleスプレッドシート等のGoogle Apps Scriptを指定した時・分に毎日実行させるための方法をまとめます。

日毎のトリガーに設定できるのは単位

Googleドライブで使用できるGoogle Apps Scriptは、トリガーを設定することで様々なタイミングで自動的に実行することができますが、毎日6時のような指定をした場合、実行は時間ぴったりではなく6時から7時の間というアバウトなタイミングになってしまいます。
6時ちょうどや6時1分前のような指定はできないのです。

ここで[日タイマー]ではなく[特定の日時]を選択すると分単位まで指定することもできますが、これだと毎日実行させるには1日ごとにトリガーを設定しなければなりません。

解決方法

実はGoogle Apps Scriptにはトリガーを設定する関数があるので、予め設定しておいた日毎のトリガーから、その日の[特定の日時]のトリガーを設定することで、分単位の時間で毎日スクリプトを実行することが可能になります。

今回は毎日17時59分にスクリプトが実行されるようにしてみましょう。

まずはスクリプトエディタの[リソース][編集][現在のプロジェクトのトリガー]にて、トリガーを設定するための関数を毎日実行するよう設定します。
(目的の時間より前に実行されるよう時間を早めにしてある)
トリガー.jpeg

スクリプトは以下の通り

// その日の17時59分にトリガーを設定
function setTrigger() {
  var triggerDay = new Date();
  triggerDay.setHours(17);
  triggerDay.setMinutes(59);
  ScriptApp.newTrigger("main").timeBased().at(triggerDay).create();
}

// その日のトリガーを削除する関数(消さないと残る)
function deleteTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == "main") {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
}

// 実行したいスクリプト本体
function main() {
  deleteTrigger();

  //
  // ここで何かする
  //
}

これで毎日呼び出されるsetTrigger()により、その日の17時59分にmain()を実行するトリガーがセットされ、その結果めでたく毎日17時59分にスクリプトを実行させることに成功しました。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした