Slackワークフローを使って、未来の上司(内定者バイト)のために日報運用をちょっと便利にしてみた件

こんにちは！場末のエンジニアことガチムチ(ムチ成分多め)です。
皆さんは日報というか作業ログというかそういったものはどうしていますか？
私のチームでは、メンバーそれぞれがSlackで毎朝昨日やったこと、今日やることを投稿し、そのスレッドに作業ログを書いていくスタイルで運用しています。

特に困っていることはないのですが多少の煩わしさがあります。
それは、毎朝昨日何やっていたっけ？とチャンネルを遡らないといけないことと、ある種決まっているようなフォーマットを毎回入力しないといけないことです。
~~正直アドベントカレンダーネタのためにひねり出した感が否めないですが、~~有給とったり、内定者バイトさんが1週間出社が空いたりするとチャンネルのメインスレッドが進むので、結構めんどくさかったりします。

そこで、前回の作業予定の内容を記録しておいて、いい感じにフォーマットして投稿してくれる[Slack ワークフロー](https://slack.com/intl/ja-jp/help/articles/360053571454-Slack-%E3%81%A7%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B)を作って煩わしさから魂の解放を行ったという話です。

# ワークフローと各種ステップの説明
データの保存先はスプレッドシートにしワークフロー開始時に保存されている前回のやることを取得し、今回のやることを入力されたら更新するような流れにしました。
## 全体図
![スクリーンショット 2021-12-02 19.51.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/abddc5c4-4769-fd6e-6bb3-15f50da10f49.png)

## 各種ステップの概要
```
wfをショートカットが選択されたら起動する
↓
スプレッドシートでワークフローを起動した人のログを検索
↓
フォームメッセージに前回の予定をセットし送信
　　フォーム内容は前回やったこと、今回やることを入力できるように設定する
↓
チャンネルに送信
　チームのグループメンションをつけてメッセージ送信
↓
シート更新
```
## スプレッドシートの準備
まず、以下のようなシートを含むスプレッドシートを用意しておきます。
この後説明するシートを更新するステップでは、検索できるキーが一つのため、ユーザー一人につき、一行で更新していく方式にしました。

| member | log | date |　format-date |
| ---- | ---- | ---- | ---- |
| email-address | やることを保存するところ | wfを実行した日時 | 関数でdateをフォーマット値(後述) |

## スプレッドシートの検索
Slackが用意してくれている[Select a spreadsheet row](https://slack.com/app-pages/google-sheets)を利用してwfを実行した人のメールアドレスでmember列を検索をします。
変数からwfを始めた人の属性が取得できます。
取得した行の情報は変数として次以降のステップに引き継がれます。
![スクリーンショット 2021-12-02 20.24.27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/156a8f3b-d3b2-606d-524c-f926f4732321.jpeg)

## フォームの送信
メッセージのテンプレートを適当に入力します。
ここで、スプレッドシートから取得したlog列の値をセットし前回の予定を送ってあげます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/76093612-ae7b-7372-1d3c-2ef5a0bde3ad.png" width="500">

下の方で、入力フォームの設定を行います。
今回は、前回*やったこと*、今回やることにしました。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/100dce21-d477-fbe3-d42b-b492b32615e6.png" width="500">

フォームが送られてきたメッセージで、前回予定が確認でき、実際にやったことと、今日やることをまとめれるようにしました。

## メッセージの送信
フォームに入力された値を使って日報を送ります。
このメッセージテンプレートに今まで準備してきた変数が使えるので、必要なものを使って構築します。
ここには書いてないですが、`@hogehoge-team`みたいにメンションもつけれます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/61c11da4-2bf2-0bdb-2f36-34d229e96933.png" width="500">

## スプレッドシートの更新
最後にスプレッドシートの更新を行います。
これは、最初にスプレッドシートを検索したときと同じように更新する行を選択し、更新する列に値をセットするように設定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/ef3f884d-311b-3257-9933-50e9c56b0251.png" width="500">

## 動作確認
ワークフローを設定したチャンネルの入力欄の左下のショートカットからwfを実行します。
そうすると、なんということでしょう〜。前回入力した内容がおくられてきたじゃないですか。
![スクリーンショット 2021-12-02 20.29.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/33ea00d7-5394-5c67-c01d-c9f3b6e29d19.png)
今日の予定を入力してみましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/1c900655-effa-f999-3e98-931c7c7b4119.png" width="500">

無事に表示されました。
![スクリーンショット 2021-12-02 20.29.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/fdded21d-b75d-994b-d811-e9f96b52ecff.png)

## 注意点

### 変数:`ワークフローが開始した時刻`

変数の`ワークフローが開始した時刻` をスプレッドシートに送ると一体どういう了見なのか、 `Thu, 02 Dec 2021 11:28:44` という形式で保存されるで、致し方なく、日付をスプレッドシートの関数でフォーマットするだけの列(`format-date`)を用意しました。

### スプレッドシートの検索結果がないとき

検索結果がないときはエラーになり、wfがうまく動作しません、そのため使うであろう人のメールアドレスを事前にスプレッドシートのmember列にセットしておく必要がありました。
ちなみに、エラーになったときは、ワークフローの設定画面のアクティビティからエラーの詳細を確認できます。
![スクリーンショット 2021-12-02 21.13.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139761/20582e7d-80b8-e2d4-ce09-eb3373816d53.png)

### 適当なチャンネルを作ってある程度動かしてから

簡単なテストは適当なチャンネルでやったんですが、メンバーに使用感とか聞く前にチームのチャンネルに導入してしまい、メインスレッドが日報だらけになってしまいました。
使う人がある程度絞れているなら使用感とか聞きながら作ったほうがいいなと思いました。当然っちゃ当然なんですが、、、
もっとドライな反応だと思っていましたが、意外とあーだこーだ議論できて楽しかったです。

# まとめ
ちょっと煩わしさを取っ払いたいとかそういったときにサクッと準備できるSlackワークフローはすごく便利だと思いました。
今回はスプレッドシートと連携していろいろやりましたが、他にもいろいろなインテグレーションが用意されているので、胸熱です。

また、使用感を確認したときにチームの人達が意外とこうしたらどうだろうか？といろいろ言ってくれたり、結構楽しかったです。
途中自分含めて「あれ...？やっぱりいらないんじゃない...？」っていう雰囲気になったときに、内定者バイトさんが「出社が1週間とか空くことがあるので、とても便利そうです！」と穢れなき言葉を言ってくれて一生ついていこうと思いました。

年末ご多忙の折ではございますが、お身体にお気をつけて良き新年をお迎えください。