7
7

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.

Slackワークフロービルダー×Googleスプレッドシートで当番お知らせbotを作る

Posted at

私の所属する開発チームでは、日々の朝会のファシリテーション担当をローテーションで回しています。
都度当番表を確認しにいく手間を省くため、毎朝ファシリ当番をメンションしてくれるbotを、Slackワークフロービルダーを用いて作ってみました。

完成形

完成イメージ.png
slackに上記の投稿がなされます。
<@メンバーID>で担当者にメンションは飛びますが、@ユーザー名だけで実現することはできませんでした。惜しい。

手順

Googleスプレッドシート

以下のようなシートを作成し、Googleスプレッドシート完結でその日の担当者が自動入力されるように設定しました。
スプレッドシート全体.png

1. メンバーリストを用意する(F, G列)
メンバーリストは、メンバー名とメンバーIDで構成されています。
メンバーIDはSlackプロフィール画面の縦三点リーダー→メンバーIDをコピー で取得できます。

2. 運用開始日からの経過日数を取得する(D列)
TODAY()とNETWORKDAYS()を用いています。祝日一覧リストを参照することで、祝日を経過日数カウントから除外しています。

3. 経過日数をメンバー数で割った余り(H4)を使って、本日の担当者名、担当者IDが格納されたセルを取得する(B4, C4)
n人のメンバーがいるとき、余りは0からn-1の値を取りますが、作成したシート上でメンバーが格納された行番号は2行目からn+1行目までとなっています。そこで、担当者セルを取得する場合は、ADDRESS({余り}+2, 6, 3)としてF列から担当者を抽出します。

4. 土日祝ではない場合、ワークフロービルダーで読み取る箇所に担当者名と担当者IDを格納する(B2, C2)
E列にWEEKDAY()を使った土日判定、祝日一覧リストとCOUNTIF()を用いた祝日判定を記入しています。その上で、B2, C2において、土日祝のいずれにも該当しない場合、INDIRECT()で先ほどB4, C4に設定したセル番号の値を表示するようにしています。
ワークフロービルダーのスケジュール実行では祝日の除外ができないのですが、上記のように、休みの日はスプレッドシート上で読み取り箇所に担当者を入れないようにすることで、誰にもメンションが飛ばないようにしました。

Slackワークフロービルダー

ワークフロービルダーの画面には、Slack画面左上のワークスペース名の部分を押して、「ツールと設定」→「ワークフロービルダー」で遷移できます。
以下のようなワークフローを作成しました。
ワークフロービルダー全体像.png

1. スケジュールに基づきワークフローを開始する

2. スプレッドシートと連携する
ここで設定した「検索する列」と、その列の中から選択可能な「検索するセルの値」に基づき、スプレッドシート上で「検索するセルの値」の行に含まれる値をワークフロービルダーから読み取れるようになります。

3. メッセージを設定する
「変数を挿入する」→「列の値」からスプレッドシートの値をメッセージに埋め込むことができます。

おわりに

綺麗な見た目とは言い難いですが、短時間で欲しい機能を作ることができて良かったです!お読みいただきありがとうございました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?