Slackワークフロービルダーはとても便利だが、条件分岐が使えず痒い所に手が届かない。
せめて回答内容のカテゴリー別にメンション先を分けるとかやりたいなーと思っていたら、非エンジニアでも出来るスプシを使って比較的シンプルな実現方法が見つかったので書いておく。
【追記】
2023/05/19以降、メンションについてはSlack側の仕様変更によって出来なくなっています。条件分岐はこの方法で実現可能なので記事は残しておきます。
【追記2】
2023/08以降、レガシーワークフロー以外はスプシの行を取得する際にRow Indexしか取れなくなっています。これにより、条件分岐は出来なくなりました。レガシーワークフローではまだ出来るので一旦記事は残しておきます。
今回は、好きなお昼ご飯のジャンルを入力するとジャンルに応じて予約担当を決めるフォームを作ってみる
完成形
作り方
下記のようにワークフローを作る
ステップ説明
1. ショートカットで開始する
2. フォームを開く
3. Add a spreadsheet row
- Google Spread Sheetに「回答内容」シート追加
A1に「回答」、B1に「WF開始日時」と入力する
- Slackは下記のように設定
↑ワークフローが開始した時刻をスプシに残しておくのがポイント! これでこの後のステップで行が引き当てられる。
(2023/03/23 追記)
「ワークフローが開始した時刻」は最新だと変数の一覧から除外されている。
{{スレッドID==current_timestamp}}
のように手書きすればとりあえず入力可能(非公式なのでいつか利用できなくなる可能性はあり)。
4. ワークフローを開始したチャンネルにメッセージを送信する
5. Select a spreadsheet row
- Google Spread Sheetに「【マスタ】ジャンルx担当者」シート追加
A1に「カテゴリー」、B1に「担当者」と入力。2行目以降には適当に各カテゴリーと担当者を指定する。
- Google Spread Sheetに「【マスタ】担当者」シート追加
A1に「担当者」、B1に「メンバーID」と入力。2行目以降に担当者名とSlackのメンバーIDを<@メンバーID>
のフォーマットで入力
↑メンバーIDはSlackのプロフィールから取得可能
↑実は、→この方法は仕様変更により使えなくなりました。<@メンバーID>
と指定することで メンションとしてSlackが扱ってくれる!!! - Google Spread Sheetに「回答内容x担当者」シート追加
- Slackは下記のように設定
↑対象は、「回答内容x担当者」シート(担当者を引き当て済のシート)であるため注意(手順2で追加したシートじゃない)
6. スレッドにメッセージを送信する
↓カテゴリーに応じた担当者にメンションがいく設定が完成!
おわりに
いかがだったろうか? この方法ならSlackワークフロービルダーにスプシの関数を利用することができるので、プログラムにそこまで明るくなくてもフォームの回答結果を割と簡単に分類分けが出来て汎用性が高いんじゃないかなと個人的には思っている。社内申請とかでうまく使えば、申請分類から申請に対応する部署や人を切り替えたりすることもできるかもしれない。単にユーザ名ではなく、メンションになる点がミソだと思っている。 →案の定、仕様変更により使えなくなりました。<@メンバーID>
がメンションになることを発見したのはラッキーだった(ただし、この仕様は非公式なので今後使えなくなる可能性はあり)。
この記事が誰かに役立ったら嬉しい限り。