LANG SELRCT

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

2018年9月7日金曜日

毎週特定の日時ちょうどに実行するトリガーを作る


毎日特定の日時ちょうどに実行するトリガーを作る
とほぼ同じですが、毎日ではなく毎週設定したい場合のコードを別途書きました


この例では、毎週月曜日に実行するため以下のように設定します

  .everyWeeks(1)
  .onWeekDay(ScriptApp.WeekDay.MONDAY)



やりたいこと
  • 毎週月曜日の18時ちょうどに send_mail を実行したい(自動で)



コード.gs
function set_project_trigger(){
  ScriptApp.newTrigger("add_temp_trigger")
  .timeBased()
  .everyWeeks(1)
  .onWeekDay(ScriptApp.WeekDay.MONDAY)
  .atHour(6)
  .create();
}

function add_temp_trigger() {
  delete_temp_trigger();
  var date = new Date();
  date.setHours(18);
  date.setMinutes(00);
  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());
}

function delete_temp_trigger() {
  var allTriggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < allTriggers.length; i++) {
    if (allTriggers[i].getHandlerFunction() == "send_mail") {
      ScriptApp.deleteTrigger(allTriggers[i]);
      break;
    }
  }
}


関連記事