1
0

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 1 year has passed since last update.

【GAS + Slackbot】毎朝担当を通知する当番botをつくる #2

Last updated at Posted at 2022-06-16

はじめに

こちらの記事の続きです。
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つのトリガーを追加します。
gas_trigger_1.png
gas_trigger_2.png

2. GSSの設定

スプレッドシートで当番表を作ります。

  1. 新規スプレッドシートを作成し、シート名を「当番表」に変更します。
  2. A列に行数、B列に名前、C列にSlackのユーザーID、D列に0、E列の先頭に「当番」の文字列、F列に0、G列の先頭に「当番」の文字列を入力します。
  3. 2のA,B,C,D,F列に対しての操作を司会持ち回り担当者数分追加します。
  4. J1セルにメンバ数を入力します。

すべて入力後、以下のような状態になっていればOKです。
gss_dutyinfo.png
完成したらスプレッドシート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つのコマンドを追加します。

  1. /skip
    slashcommand_1.png
  2. /pass
    slashcommand_2.png
  3. /pone
    slashcommand_3.png
  4. /check
    slashcommand_4.png

同じワークスペースの他のチームとコマンドを区別したい場合、Commandに登録するコマンドを/skip:Aチームのように、:で分けることができます。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?