🤖
特定の期間だけGAS経由でslackに毎日通知を出す
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');
}
最後に
- あまりきれいなやり方ではないので、他のやり方があれば教えて欲しい
Discussion