はじめに
Slackのremindで↓の設定をしていると、祝日も通知が来て嫌だったのでつくりました。
/remind @here "10時から朝礼します。参加しますか?" at 10:00 every weekday
Google apps script(GAS)でなんでもできる。
1. Slackアプリ追加
Slack API の Your Apps からアプリを追加する
OAuth & Permissions 設定
左メニューの「OAuth & Permissions」から「Install App to Workspace」を選択してワークスペースのTokenを取得する
2. GASからSlackにメッセージ
GAS作成
Googleドライブの +新規 > その他 > Google apps script を選択
リソース > ライブラリ で「M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO」を追加し、最新バージョンを選択する
ファイル > プロジェクトのプロパティ > スクリプトのプロパティ にTokenを追加
サンプルプログラムをコピー
var token = PropertiesService.getScriptProperties().getProperty('SLACK_TOKEN');
function test() {
var slackApp = SlackApp.create(token);
var channel = "#qbot-test";
var message = "おはよう";
slackApp.postMessage(channel, message);
}
3. 祝日に通知しないトリガーを作成する
トリガー登録
トリガーの実行する関数を準備
function addTrigger() {
// ここに処理
}
編集 > 現在のプロジェクトのトリガー (またはストップウォッチアイコンメニュー) を選択
右下の「+トリガーを追加」から実行する関数を選択
毎日朝6時から7時に実行する設定にしています
平日だけ通知する
【GAS】休日・祝日を判定する関数 を使います。
トリガーで追加した「addTrigger」の処理に休日ならそのままreturnするようにします。
平日なら時間と関数を指定して新しくトリガーをセットします。
実行済みのトリガーが残ってしまうのでdeleteTriggerで削除しています。
function addTrigger() {
if (isHoliday()) {
return;
}
var date = new Date();
date.setHours(9);
date.setMinutes(30);
ScriptApp.newTrigger("morningBot").timeBased().at(date).create();
}
function deleteTrigger(name) {
var triggers = ScriptApp.getProjectTriggers();
for(var i=0; i < triggers.length; i++) {
if (triggers[i].getHandlerFunction() == name) {
ScriptApp.deleteTrigger(triggers[i]);
}
}
}
function morningBot() {
deleteTrigger("morningBot");
var channel = "#qbot-test";
var message = "朝礼参加しますか?";
slackApp.postMessage(channel, message);
}
最後に
よい週末、祝日をお過ごしください