その他

GASで特定時間に自動実行するようにトリガーをセットする(正規表現で月・日・曜日で範囲指定)[No106]

スポンサーリンク

タイトルの通りです。プログラムと設定方法を紹介します。

Google Apps Scriptの用意

Google Apps Script(GAS)の用意


function setTrigger() {
  deleteTriggers('myFunction');

  //下記の場合は、1月~12月 で 1日~31日 で 月~土の曜日であれば、08:00にトリガーを設定する
  setTriggerMain('myFunction', /0[1-9]|1[0-2]/, /0[1-9]|[12][0-9]|3[01]/, /[1-6]/, 08, 00);

  setTriggerMain('myFunction', /0[1-9]|1[0-2]/, /0[1-9]|[12][0-9]|3[01]/, /[1-6]/, 12, 00);
  setTriggerMain('myFunction', /0[1-9]|1[0-2]/, /0[1-9]|[12][0-9]|3[01]/, /[1-6]/, 16, 00);
  setTriggerMain('myFunction', /0[1-9]|1[0-2]/, /0[1-9]|[12][0-9]|3[01]/, /[1-6]/, 21, 00);
}

//funcName    ⇒ プログラム名
//regExpMonth ⇒ 正規表現での判定(月)  (1月:00/2月:01/・・・12月:11)
//regExpDate  ⇒ 正規表現での判定(日)  (1日:01/2日:02/・・・31日:31)
//regExpDOW   ⇒ 正規表現での判定(曜日)(日:0/月:1・・・土:6)
//setHour     ⇒ 設定Hour
//setMinute   ⇒ 設定Minute
function setTriggerMain(funcName, regExpMonth, regExpDate, regExpDOW, setHour, setMinute) {
  try {
    const date = new Date();

    if (regExpMonth.test(date.getMonth().toString().padStart(2, "0"))) {
      if (regExpDate.test(date.getDate().toString().padStart(2, "0"))) {
        if (regExpDOW.test(date.getDay())) {

          date.setHours(setHour);
          date.setMinutes(setMinute);

          ScriptApp.newTrigger(funcName).timeBased().at(date).create();
        }
      }
    }
  } catch (err) {
    console.log(err);
  }
}

function deleteTriggers(funcName) {
  const triggers = ScriptApp.getProjectTriggers();
  triggers.forEach(trigger => {
    if (trigger.getHandlerFunction() !== funcName) return;
    ScriptApp.deleteTrigger(trigger);
  });
}

function myFunction() {}

スポンサーリンク

トリガーの用意

下図のようにトリガーを設定する。このプログラムの場合は、「時刻を選択」は「午前0時~1時」がいいでしょう。

日本時間で行う場合は、タイムゾーンは「Asia/Tokyo」に設定する。

参考サイト/関連サイト

setTrigger関数、setTriggerMain関数について

Google Apps ScriptでGmailの情報を取得する際に、受信日時を細かく指定する方法。

月末日や最終金曜日にGoogle Apps Scriptを自動で実行するテクニック

Google Apps Script で 平日の 特定時間帯のみ 1時間おきに関数を実行する

日付および時刻の正規表現

deleteTriggers関数について

【GAS】指定した時間ぴったりにトリガーを設定する方法

最後までお付き合いいただきありがとうございます!

この情報が誰かの役にたてれば幸いです。

スポンサーリンク

-その他