特定の期間だけGAS経由でslackに毎日通知を出す

1 min read読了の目安(約800字

TL;DR

  • 特定の期間だけGAS経由で決まった時間にSlackにリマインダーを送りたいよ
  • GASの定期実行のトリガーは定期実行ができるけど指定日で停止することはできないよ
  • GAS内で次の実行トリガーを設定して実行することで指定日で停止することができたよ

背景

  • Google App Script 経由で、Slackに定期的にPostしていたが、一定期間を過ぎたら自動的に停止してほしい
  • 期間過ぎたらわざわざ、スクリプトエディタ経由で停止作業するのが煩わしい

解決策

  • スプレッドシート側に停止する日付を記入するセルを作成する
    • セルのデータの入力規則を日付にしておくと良い感じ
  • GAS側で実装する
function notify(){
  let sheet = SpreadsheetApp.getActiveSpreadsheet()getSheetByName("Reminder");
  // 'Reminder'という名前のシートのA1に通知を停止する日付を記入しておく
  const deadline = new Date(sheet.getRange('A1').getValue());
  const now = new Date();
  if (deadline > now){
    // 次の日の10時に設定
    now.setDate(now.getDate()+1);
    now.setHours(10, 0, 0);
    // リマインダを設定
    ScriptApp.newTrigger('notify').timeBased().at(now).create();
  }
  Logger.log('remind');
}

最後に

  • あまりきれいなやり方ではないので、他のやり方があれば教えて欲しい