はじめに
こちらの記事の続きです。
https://qiita.com/k_ued/items/499b25c0bd56094c7cfd
今回はこのSlack botに機能を追加して、運用できる形にしていきます。
追加機能
毎朝の通知に加え、以下の機能を追加します。
通知機能
- 平日の毎朝8-9時の間に、今日の朝会担当者をメンション付きで通知します。
- 通知の例:「@ hogehoge 今日の朝会当番はほげほげさんです。」
- 月・木曜日は朝会担当者とは別に、フリートーク担当者を通知します。
- フリートーク担当者については、月・木曜日の朝11-12時に次の担当者を通知します。
- 長期休暇など、通知をしない期間を設定することができます。
担当者変更機能
- 各コマンドの引数に
d
もしくはf
を指定することで、朝会とフリートークのどちらをスキップするか決めることができます。- 例:
/skip d
:今日の朝会担当者をスキップ
- 例:
- Slackから
/skip
コマンドを実行することで、今日の担当者をスキップすることができます。 - Slackから
/pass
コマンドを実行することで、今日の担当者を1周分スキップすることができます。 - Slackから
/pone
コマンドを実行することで、今日の開催を延期することができます。 - Slackから
/check
コマンドを実行することで、次の担当者を確認することができます。
ソースコード
以下のGitHubにソースコードを載せています。
GASのワークスペースにコピペし、BOTのトークンなどの必要な情報を入力します。
導入方法
1. GASの設定
1-1. ソースコードのコピペ
GASで新規プロジェクトを作成したのち、とりあえずGitHubのソースコードをすべてコピペしてください。(README.mdとappsscript.jsonはコピペしないでください)
一応ファイル分割されていますが、GASの特性上、コード.gs
にすべて貼り付ける形でもOKです。
ただ、分割しておいた方が後々メンテナンスしやすくなります。
1-2. ライブラリの追加
GASの一部の処理にSlackApp
というAPIを使っているので、インストールします。
サイドメニューの「ライブラリ」の右にある+ボタンを押下し、以下のスクリプトIDをペーストします。
1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
「検索」ボタン → 「追加」ボタンの順にクリックします。
1-3. タイムゾーンの設定
GASのタイムゾーンを日本に設定します。
サイドメニューの「プロジェクトの設定」から変更できます。
1-4. トリガーの設定
毎朝同じ時刻に実行されるトリガーを追加します。
前回の問題は改善されたため、追加するトリガーは2つでOKです。
以下の2つのトリガーを追加します。
2. GSSの設定
スプレッドシートで当番表を作ります。
- 新規スプレッドシートを作成し、シート名を「当番表」に変更します。
- A列に行数、B列に名前、C列にSlackのユーザーID、D列に0、E列の先頭に「当番」の文字列、F列に0、G列の先頭に「当番」の文字列を入力します。
- 2のA,B,C,D,F列に対しての操作を司会持ち回り担当者数分追加します。
- J1セルにメンバ数を入力します。
すべて入力後、以下のような状態になっていればOKです。
完成したらスプレッドシートIDを保管しておきます。
3. Slack Botの設定
通知やSlash Commandを実行するSlack Botを作成します。
基本的な作成方法は以下の記事を参考にしてください。
権限の設定とアプリのインストール
[OAuth & Permissions - Scopes - Bot Token Scopes]に以下の4つの権限を追加してください。
- chat:write
- chat:write.customize
- chat:write.public
- commands
権限を追加するとワークスペースにアプリをインストールできるようになります。
アプリをインストールし、発行される[Bot User OAuth Token]を保管しておきます。
4. GASに必要な情報を設定
ここまでの手順で取得したトークンやIDをGASに追記します。
以下の操作をGASのmain.gsに対して行います。
- 1行目のGSS_IDにスプレッドシートIDをペースト
- 3行目のGSS_SHEET_NAMEにユーザー数を入力
- 23行目のCHANNELにメッセージを投稿するチャンネル名を入力(例:#general)
- 24行目のSLACK_BOT_TOKENにSlackbotのトークンをペースト
ペーストしたコードでデプロイします。
GASのデプロイ方法については、以下の記事が参考になると思います。
デプロイできたら、ウェブアプリURLを保管しておきます。
5. Slash Commandsの設定
これが最後の設定項目です。
Slack Botの設定から[Slash Commands - Create New Command]から以下の4つのコマンドを追加します。
同じワークスペースの他のチームとコマンドを区別したい場合、Commandに登録するコマンドを/skip:Aチーム
のように、:
で分けることができます。