notebook

都内でWEB系エンジニアやってます。

SlackワークフローとSpreadsheetで簡単ToDoリマインダー

Slackのワークフローを使って日によって都度内容の違うリマインドを行う

SlackのワークフロービルダーでSpreadsheet連携(Select Spreadsheet Row)を使うと特定の行を取り出し後続のステップに変数として含めることができる

さらに、スプレッドシートに工夫をすることで、日によってリマインド内容を変えるリマインダーを作成可能そうということでやってみた

スケジュール(ワークフロー)

これは単に設定するだけ

スケジュールで扱える後続ステップでの実行時刻の変数は2022-03-07T00:00:00といった感じで出力される

ワークフロー内でフォーマットは行えないようなのでスプレッドシート側で工夫しないと対象行を特定できない

Spreadsheet側での工夫

f:id:swfz:20220321173032p:plain

こちらは先週書いた記事のようにタスク、期限、担当者のリストを日付でグループ化してリマインド対象の文字列を整形した結果

今回は上記をもとに話を進める

ワークフロービルダーの設定側で日付の列に対して「今日の日付」を指定できるのか試みたができなそうだった

そのため今日がリマインド対象の行であることを明示的に示す列を用意してする

dateが今日であるならremind という文字列を表示するような式を入れた

  • remind
=IF(TODAY()=G2,"remind","-")

後の設定ではremindカラムの値がremindな行を選択する

こうすることで、日によって違う対象行を選定することが可能となる

Select Spreadsheet Row

ワークフロービルダーのSelect Spreadsheet Rowで対象行を選定する

特定のカラムの内容がマッチする行を取得できる

ただし、条件にマッチする1行目が対象となるよう

リマインダー用途の場合、1日に複数のタスクがある場合はまとめる必要がありそう(上記Spreadsheet側での工夫で実施済み)

ワークフロービルダーの設定では「remindの列がremindの行を取得する」という設定を行うだけ

f:id:swfz:20220321173038p:plain

メッセージをカスタマイズする

あとはメッセージ送信のステップでスプレッドシートのカラムの内容を使えるのでカスタマイズする

f:id:swfz:20220321173044p:plain

マッチしない日はエラーとなるのでメッセージは送信されない

この方法だと、メンションを個別に送ることはできないのでカバーできる範囲のグループメンションを固定でメッセージに付与してお茶を濁す感じになりそう

サンプルで送ってみた感じが下記

f:id:swfz:20220321173049p:plain

おおむね期待通り

まとめ

  • SpreadsheetとSlackワークフロービルダーを用いてリマインドメッセージを流せるようにした
  • Spreadsheetで日付周りの計算を任せることで日付によって選択される行が変わるようにした