私の所属する開発チームでは、日々の朝会のファシリテーション担当をローテーションで回しています。
都度当番表を確認しにいく手間を省くため、毎朝ファシリ当番をメンションしてくれるbotを、Slackワークフロービルダーを用いて作ってみました。
完成形
slackに上記の投稿がなされます。
<@メンバーID>で担当者にメンションは飛びますが、@ユーザー名だけで実現することはできませんでした。惜しい。
手順
Googleスプレッドシート
以下のようなシートを作成し、Googleスプレッドシート完結でその日の担当者が自動入力されるように設定しました。
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画面左上のワークスペース名の部分を押して、「ツールと設定」→「ワークフロービルダー」で遷移できます。
以下のようなワークフローを作成しました。
2. スプレッドシートと連携する
ここで設定した「検索する列」と、その列の中から選択可能な「検索するセルの値」に基づき、スプレッドシート上で「検索するセルの値」の行に含まれる値をワークフロービルダーから読み取れるようになります。
3. メッセージを設定する
「変数を挿入する」→「列の値」からスプレッドシートの値をメッセージに埋め込むことができます。
おわりに
綺麗な見た目とは言い難いですが、短時間で欲しい機能を作ることができて良かったです!お読みいただきありがとうございました。