2. Zapierを使って、特定のSlackリアクションがついたメッセージをスプレッドシートにTODOとして蓄積する

Updated
2021/8/8 8:27
Author
Jumpei IkegamiJumpei Ikegami
前回のチュートリアルでは、Zapier(ザピアー)を使って通知の自動化を実現してみました。今回は、Slackの業務依頼メッセージを忘れないためにGoogleスプレッドシートに自動連携するようなZapを作ってみます。連携するSlackメッセージを特定するためには、Slack絵文字を利用してみます。さらに、タスク管理にまつわるZapier利用例についても紹介します。
最後に、チュートリアルで紹介しきれなかったZapierの機能についても簡単に説明します。

前提知識

SlackとGoogleスプレッドシートを業務で使っていることを前提に説明していきます。ただし、SlackについてはTeams/Chatworkなど別のサービスを使っている場合であっても似たような設定は可能です。
また、このチュートリアルは次のチュートリアルの続きとなっています。
1. Zapierを使って、Gmailで受信したメールの一部をSlackに通知する2021/6/20 5:302021/8/8 8:26

やること

Zapierを使って、特定の絵文字がついたSlackメッセージの内容を自動でGoogleスプレッドシートに蓄積する仕組みを作ります。
notion image
Slackで特定の絵文字がついたメッセージが、
notion image
自動でGoogleスプレッドシートに蓄積されます
 

体験すること

このチュートリアルによって、次のことが体験できます。
  • Slack絵文字がついたメッセージをGoogleスプレッドシートに連携するZapの作成
  • Zapierのその他の機能(スケジュール実行、フィルター、分岐)を理解する

チュートリアルスタート!

ここからは、実際に手を動かしながら読み進めていきましょう。ただ読むだけよりも、実際に体験した方が内容を深く理解することができます。

"Slack" Appを使って絵文字追加時にトリガーするためのStepを作成する

前回のチュートリアルで、Zapierの設定については一通り慣れたかと思います。今回の設定フローについても、前回と大きく変わるところはありません。
まずは、例によってZapの新規作成画面を開きます。
次に、 "Slack" というAppを選択します。前回はSlackを「アクション」として利用しましたが、今回は「トリガー」に使うことに注意してください。このように、Zapierでは同じAppをトリガーにもアクションにも使用できる場合があります。
notion image
まずは、前回と同様に左上の "Name your Zap" をクリックしてZapに名前を付けましょう。迷ったら「Slack絵文字が付いたメッセージをスプレッドシートのTODOへ」などとしておきます。
Choose Trigger Eventからは、Slack上でトリガーに使える出来事の一覧が確認できます。見てみると、「メッセージ投稿時」や「ユーザーの新規追加時」など豊富なトリガーが選べることがわかります。ここでは、Slack絵文字(Reaction)の追加をトリガーにしたいので、 "New Reaction Added" を選択します。
notion image
次に進むと、例によってSlackアカウントの選択設定が出てきます。今回のZapで連携したいSlackワークスペースに属しているSlackアカウントを選択してください。
次に、トリガーに利用する絵文字を選択します。既存の絵文字であっても使えますが、せっかくなので用途に応じてわかりやすいカスタム絵文字を作成しましょう。
ここで少し横道にそれて、Slackカスタム絵文字を簡単に作成する方法をご紹介します。(作ったことがある人は読み飛ばしてください。)見やすいSlack絵文字を作るためには、背景が透明な四角形の画像を生成する必要があります。通常はペイントツールなどを使って画像を作成しますが、やってみると意外とめんどくさいです。そこで、文字だけを使ったカスタム絵文字であれば、絵文字ジェネレーターを使うのが便利です。「Slack 絵文字 ジェネレーター」などと検索をするといくつか出てくると思います。たとえば私は、絵文字ジェネレーターで「TODO」という文字を使った絵文字を作ってみました。
notion image
絵文字画像ができたら、このページからSlackに絵文字を追加します。ワークスペース単位で管理されるので、ワークスペースの外の人に見られることは基本的にはありません。安心してください。
notion image
カスタム絵文字が追加できたら、Zapierの管理画面に戻ります。Customize ReactionのReactionという欄をプルダウンすると、ReactionとCustomの2つのタブが表示されます。今回はカスタム絵文字を利用するので、Customを選択します。すると、「カスタム絵文字はプルダウンから選べないから直接名前を入力してくれい」という旨のことを英語で言われます。ここは逆らわずに、テキストボックスに絵文字名を入力してください。ChannelやUserなどのその他の設定は、絵文字が使われた場所やユーザーでトリガー発生条件を絞り込むためのものです。今回は不要なので、入力せずに先に進みましょう。
notion image
ご存知の通り、Zapierではトリガーの条件が正しく設定されているかのテストをすることができます。ただし、テストをする前に、先ほど作成したカスタム絵文字をSlackの任意のpublic channelで使ってみる必要があります。これで、Zapierがこのメッセージをプレビュー用に取得できるようになります。
notion image
Zapierの画面に戻って、テストを実行してみましょう。成功すると、先ほど絵文字をつけたSlackメッセージがプレビュー表示されます。
notion image
ここまでで、Slack絵文字をトリガーとして利用するStepの設定は終了です。

"Google Sheets" Appを使って通知のためのStepを追加する

次に、アクションを定義するためのStepを編集していきます。
今回は、Googleスプレッドシートに行を追加するので、Appは "Google Sheets" を、Action Eventは "Create Spreadsheet Row" を選択します。
notion image
次に、毎回恒例のアカウント選択をします。こちらも、できれば業務で使っているGoogleアカウントを選択するとすぐにZapierを仕事で使えるのでおすすめです。
ここからはいよいよ、スプレッドシートにSlackメッセージの内容をどのように蓄積するかの設定をしていきます。
しかし、まずはSlackメッセージをTODOとして記録するためのスプレッドシートを新規作成する必要があります。ここでは再び横道にそれて、Googleスプレッドシートの管理画面から新しいスプレッドシートを作ります。作成したスプレッドシートには、適当な名前を付けましょう。さらに、1行目(ヘッダー行)のA列からそれぞれ "user" 、 "todo" 、 "url" と入力します。これで、列に名前をつけることができました。
notion image
これで、スプレッドシート側の準備はOKです。Zapierの画面に戻って、設定を続けましょう。まずは、Drive、Spreadsheet、Worksheetについて、それぞれ先ほど作成したシートに対応するものを選択します。スプレッドシート側の変更が反映されていない場合は、プルダウンの中に表示される "LOAD MORE" というボタンを押すと再読み込みされます。シートを選ぶと、自動でそのシートのヘッダー行が読み込まれます。User、Todo、Urlのそれぞれの更新内容をZapier側で設定できるようになります。(動的にフォームの数が変わるところに、Zapierの汎用性の高さを感じますね。)ここでは、指定した絵文字がついたSlackメッセージの内容を、スプレッドシート側の列に対して、それぞれ次のように対応付けます。
  • User: "User Real Name"
  • Todo: "Message Raw Text"
  • Url: "Message Permalink"
notion image
驚くべきことに、これだけで設定は完了です。最後にスプレッドシートにプレビューの内容を書き出せるかどうかテストをします。次の画像のようにレコードが追加されれば成功です。
notion image
問題なければ、最後にDone Editingをクリックし、ZAPをONにします。これで、実際にSlackで指定のカスタム絵文字がついたメッセージの内容が、自動でスプレッドシートに書き出されるようになりました。次々に来るSlackの業務依頼メッセージを覚えていられない方でも、絵文字をつけるだけで後からまとめてスプレッドシート上で確認することができるので、もう安心ですね。

その他のタスク管理系ユースケースを知る

今回は、SlackのメッセージをGoogleスプレッドシートに通知するというZapierの利用例を見てみました。他にも、様々なサービスに散らばっているTODOをタスク管理ツールに連携するようなユースケースをいくつかご紹介します。
まずタスクが発生する元となるサービスについては、今回利用したSlack以外にも次のようなサービスが考えられます。
  • Microsoft TeamsやChatworkなどのその他のビジネスチャットツール
  • Gmailなどのメールクライアントサービス
  • Googleフォームなどのフォーム管理サービス
  • 採用管理ツールなど、人事・労務系のシステム
また、タスクを蓄積する先のサービスについても多くの例が考えられます。今回は設定を簡単にするためにGoogleスプレッドシートを使いましたが、JiraやGitHubなどのチケット管理ツールに連携するのが業務フロー上は自然かと思います。
たとえば、「とあるメーリングリストに対して来たメールから自動でJiraのチケットを生成し、メール対応のチケット管理を自動化する」といったことが簡単に実現できます。
あなたの仕事の身の回りでたまにタスクがこぼれ落ちるなあと感じることがあったら、それはZapierを試しに業務で使ってみるチャンスかもしれません。

Zapierのその他の機能

最後に、今回のチュートリアルの内容からは少し外れますが、チュートリアルのシナリオで登場しなかったZapierの機能についていくつか紹介します。

トリガーのスケジュール実行

トリガーとなる最初のStepでは、 "Schedule by Zapier" というAppを選ぶことができます。これを使うと、「毎朝9:00にZapを起動する」といったスケジュール実行を設定することができます。
notion image
スケジュール実行を使うと、たとえば「毎週必ず発生するタスクを自動でチケット管理ツールに登録する」といったZapを作ることができます。

条件によるフィルタリング

チュートリアルでは2つのStepしかないZapだけを作成しましたが、3つ以上のStepから成るZapを作ることも可能です。
そしてトリガーとアクションの間に "Filter" というAppをはさむことで、「この条件を満たしているときだけアクションを実行する」という絞り込みをすることができます。
notion image
フィルターを使うと、たとえば「特定の文言が含まれたSlackメッセージだけをどこかに連携する」といったZapを作ることができます。

条件による分岐

フィルターと同様の条件設定を使って、「ある条件を満たす場合はAのStepを、そうでなければBのStepを実行する」といった分岐をさせることもできます。実際に業務で使うことは少ないかもしれませんが、Zapierの強力さが現れた機能となっています。
notion image
これで今回のチュートリアルは終了です。皆さんも、Zapierを活用して無駄な業務を自動化し、本質的で価値ある仕事に集中していきましょう。