6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

開発者の環境や技術Advent Calendar 2019

Day 1

祝日に通知しない!SlackリマインダをGASでつくる

Last updated at Posted at 2019-11-30

はじめに

Slackのremindで↓の設定をしていると、祝日も通知が来て嫌だったのでつくりました。
/remind @here "10時から朝礼します。参加しますか?" at 10:00 every weekday

Google apps script(GAS)でなんでもできる。

1. Slackアプリ追加

Slack API の Your Apps からアプリを追加する

追加できたら設定画面が表示される
image.png

OAuth & Permissions 設定

左メニューの「OAuth & Permissions」から「Install App to Workspace」を選択してワークスペースのTokenを取得する
image.png

2. GASからSlackにメッセージ

GAS作成

Googleドライブの +新規 > その他 > Google apps script を選択

リソース > ライブラリ で「M3W5Ut3Q39AaIwLquryEPMwV62A3znfOO」を追加し、最新バージョンを選択する
image.png

ファイル > プロジェクトのプロパティ > スクリプトのプロパティ にTokenを追加
image.png

サンプルプログラムをコピー

var token = PropertiesService.getScriptProperties().getProperty('SLACK_TOKEN');

function test() {
  var slackApp = SlackApp.create(token);
  var channel = "#qbot-test";
  var message = "おはよう";
  slackApp.postMessage(channel, message);
}

追加した関数「test」を選択して実行▶
image.png

いろいろ許可して
image.png

SlackにメッセージがきたらテストOK
image.png

3. 祝日に通知しないトリガーを作成する

トリガー登録

トリガーの実行する関数を準備

function addTrigger() {
  // ここに処理
}

編集 > 現在のプロジェクトのトリガー (またはストップウォッチアイコンメニュー) を選択

右下の「+トリガーを追加」から実行する関数を選択
毎日朝6時から7時に実行する設定にしています
image.png

平日だけ通知する

【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);
}

最後に

よい週末、祝日をお過ごしください

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?