サイト制作に関するメモ書き

HOME > JavaScript > Google Apps Scriptで指定した日時に処理を自動実行する

Google Apps Scriptで指定した日時に処理を自動実行する

Google Apps Scriptで指定した日時に処理を行わせるようにしてみます。

使い方・注意点

前回の記事ではスプレッドシートを操作するためにスプレッドシートからエディタを開きましたが、今回はGoogleアカウントにログインして、Google Apps Scriptのエディタに直接アクセスして使用します。

指定した時間から15分前後の誤差がある場合があるようです。
そのため、厳密な時間指定はできないようなので注意が必要です。

スクリプトファイルが不要になって削除しても、トリガーは残ります。
そのため、例えば毎週処理を実行するような指定をしていた場合、スクリプトファイル削除後も処理は実行され続けます。
この記事の最後に記載していますが、スクリプトファイルを削除する前にトリガーを削除するようにしてください。

X秒/分/時間後に実行する

一定時間後に処理を実行したい場合、after()を使います。

JavaScript

function setTrigger() {
  // 10分後に実行
  ScriptApp.newTrigger('sendMail').timeBased().after(10 * 60 * 1000).create();
}

// 実行する関数
function sendMail() {
  // 自分へのメールの送信
  var email = Session.getActiveUser().getEmail();
  var subject = 'タイトル';
  var body = '本文';
  GmailApp.sendEmail(email, subject, body);
}
newTrigger(function) トリガー実行時に処理する関数を指定。
after(ms) 何ミリ秒後にトリガーが実行されるかを指定。
引数の指定単位はミリ秒。
create() トリガーを作成。

 

指定日時に実行

指定した日時に処理を実行したい場合、at()を使います。

JavaScript

function setTrigger() {
  // 2017年2月21日 7時30分に実行
  var triggerDay = new Date(2016, (2 - 1), 21, 7, 30, 0, 0);
  ScriptApp.newTrigger('sendMail').timeBased().at(triggerDay).create();
}

// 実行する関数
function sendMail() {
  // 自分へのメールの送信
  var email = Session.getActiveUser().getEmail();
  var subject = 'タイトル';
  var body = '本文';
  GmailApp.sendEmail(email, subject, body);
}
at(date) トリガーの実行時期を指定。
引数は日付型で指定。

 

指定日の深夜に実行

JavaScript

function setTrigger() {
  // 2017年2月21日の深夜に実行
  ScriptApp.newTrigger('sendMail').timeBased().atDate(2017, 2, 21).create();
}

// 実行する関数
function sendMail() {
  // 自分へのメールの送信
  var email = Session.getActiveUser().getEmail();
  var subject = 'タイトル';
  var body = '本文';
  GmailApp.sendEmail(email, subject, body);
}
atDate(year, month, day) トリガーの実行する日を指定。
引数は年,月,日をカンマ区切りで指定。

 

何日かおきに指定した時間に実行

何日かおきに指定した時間に実行する場合、atHour()とeveryDays()を使います。
毎日(1日おき)の場合はeveryDays(1)とします。

JavaScript

function setTrigger() {
  // 毎日15時に実行
  ScriptApp.newTrigger('sendMail').timeBased().atHour(15).everyDays(1).create();
}

// 実行する関数
function sendMail() {
  // 自分へのメールの送信
  var email = Session.getActiveUser().getEmail();
  var subject = 'タイトル';
  var body = '本文';
  GmailApp.sendEmail(email, subject, body);
}
atHour(hour) トリガーの実行する時間を指定。
everyDays(n) 何日おきにトリガーを実行するかを指定。

 

何週かおきに指定した曜日の時間に実行

何週かおきに指定した曜日に実行する場合、everyWeeks()とonWeekDay()を使います。

JavaScript

function setTrigger() {
  // 毎週月曜10時に実行
  ScriptApp.newTrigger('sendMail').timeBased().atHour(10).everyWeeks(1).onWeekDay(ScriptApp.WeekDay.MONDAY).create();
}

// 実行する関数
function sendMail() {
  // 自分へのメールの送信
  var email = Session.getActiveUser().getEmail();
  var subject = 'タイトル';
  var body = '本文';
  GmailApp.sendEmail(email, subject, body);
}
everyWeeks(n) 何週おきにトリガーを実行するかを指定。
onWeekDay(day) トリガーが実行される曜日を指定。

 

トリガーの解除

登録されているトリガーをすべて削除します。

JavaScript

// トリガーの全削除
function deleteTrigger() {
  var triggers = ScriptApp.getProjectTriggers();
  for(var i=0; i < triggers.length; i++) {
    Logger.log(triggers[i].getUniqueId());
    ScriptApp.deleteTrigger(triggers[i]);
  }
}
etProjectTriggers() 現在のプロジェクトに関連付けられている全てのトリガーを取得
getUniqueId() トリガーを区別する一意の識別子を返す。
deleteTrigger(trigger) 指定したトリガーを削除。

 

【参考サイト】

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

▲PAGE TOP