LANG SELRCT

コードを書く場所についてはこちら

2018年12月30日日曜日

指定した日時に実行するトリガーをコードで書きたい


以前書いたこの記事では
毎日特定の日時ちょうどに実行するトリガーを作る
毎日繰り返すトリガーを設定しました


今回は繰り返さない一度きりのトリガーをコードで書いてみます
コードを使わずに画面でぽちぽちやる方法はこちらに書きました



コード.gs
function run(){
  var date = '2018/12/30';
  var hour = 15;
  var min = 11;
  setTrigger(date, hour, min)
}

function setTrigger(date, hour, min) {
  var date = new Date(date);
  date.setHours(hour);
  date.setMinutes(min);
  var trigger = ScriptApp.newTrigger('send_mail')
    .timeBased()
    .at(date)
    .create();
} 

function send_mail(){
  var mail_address = Session.getActiveUser().getEmail();
  MailApp.sendEmail(mail_address, "実行したスクリプトID", ScriptApp.getScriptId());
}
意訳
この機能がやること
 実行したい日付を決めて
 時間を決めて
 分を決めて
setTriggerに渡す


この機能がやること(日付、時間、分を受け取って)
new Dateで日付をJSで扱える形にして
時間を設定して
分を設定して
'send_mail'の新規トリガーを作成して
時間ベースで
設定した日時で
トリガーを作成する


この機能がやること
アクティブユーザのemailを取得して
email, 件名, 本文を設定してメールを送信する



試してみる


run()を実行します
編集 > 現在のプロジェクトのトリガーを開きます


このようなトリガーが登録されています


右端の鉛筆ボタンから編集画面を開くと
指定した日時が設定されています


指定日時になるとこのようなメールが飛んできます
※setMinutesで指定した分(例では11分)のピッタリ0秒ではなく
その分(15:11〜15:12)の60秒の間のどこかで実行されるようです


関連記事




参考

Class ClockTriggerBuilder
https://developers.google.com/apps-script/reference/script/clock-trigger-builder