1. Zapierを使って、Gmailで受信したメールの一部をSlackに通知する

Updated
2021/8/8 8:26
Author
Jumpei IkegamiJumpei Ikegami
Zapier(ザピアー)を使うことで、普段業務で使っているWebアプリケーションを組み合わせて簡単な業務プロセスの自動化を実現することができます。Zapierが使われる代表的なユースケースは、サービスをまたぐような通知の自動化です。まずは、「Gmailに来たメールが条件を満たしていたらSlackに通知する」というシナリオで、Zapierの設定をしてみましょう。その上で、Zapierで実現できるその他の通知の例を見てみます。

前提知識

GmailとSlackを業務で使っていることを前提に説明していきます。ただし、OutlookやTeams/Chatworkなど別のサービスを使っている場合であっても、Zapierに連携アプリとして登録されていれば同様の通知は実現できます。

やること

Zapierを使って、特定の条件に合致するメールが自分のGmailアカウントに来たときにSlackに通知する仕組みを作ります。

体験すること

このチュートリアルによって、次のことが体験できます。
  • Zapierのアカウント作成
  • GmailからSlackに通知するZapの作成
  • Zapierのようなサービスが登場した背景を理解する

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

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

Zapierのアカウントを作る

何はなくともZapierのアカウントを作成しましょう。
ただし、よくわからないWebサービスのアカウントをいきなり作れと言われても躊躇するかもしれません。そこでまずは、簡単にZapierとはどういったサービスなのかを紹介します。
Zapierとは、複数のWebアプリケーション同士をつないで業務プロセスなどを自動化できるサービスです。Zapier自体もWebアプリケーション(SaaS)の形で提供されています。通常、あるWebアプリケーションを外部から使って自動化をする場合、そのアプリケーションが提供しているAPIを使って独自に開発をする必要があります。しかしZapierでは、あらゆるWebアプリケーションの機能をZapierから利用するための汎用的な仕組みが "Apps" として提供されています。Zapier利用者は、これらのAppsを自由に組み合せて利用することができます。つまり、Zapierを使うと特別な開発をしなくてもWebアプリケーションを使った自動化を簡単に実現することができます。
なお執筆時点で、Zapierには無料プランが用意されています。「Gmailにメールが来たらSlack通知する」などの自動化ルールは、Zapier内ではZapと呼ばれます。月額費用を払わなくても、このZapを5つまで利用することができるようです。
Zapierのことが簡単にわかったところで、早速Zapierにアクセスしてみましょう。アカウント作成を求められるので、実際にアカウントを作成します。Googleのアカウントを使っても簡単にアカウントを作ることができます。なお、Zapierを業務で利用する場合、業務で使っている他のサービスのアカウントと連携をする必要が出てきます。もし可能であれば、Zapier自体のアカウントも業務で使っているメールアドレスやGoogleアカウントを使って作成するのがおすすめです。

Zapを新規作成する

アカウントを作成したら、Zapierの管理画面を軽く眺めてみましょう。ZapやAppなどのZapier用語が散りばめられています。新しいサービスを使い始めるとき、そのサービス内の概念や構成要素の位置付けを把握しておくと、理解が早くなることがあります。幸い、Zapierの設定のために覚えるべき概念はそこまで多くはありません。軽くさらってみましょう。
まず、Zapierの中で最も重要な概念はZapです。「Gmailにメールが来たらSlack通知する」などの自動化ルールは、Zapier内の独自の用語でZapと呼ばれます。
Zapの中には、いくつかのStepがあります。たとえば、「Gmailにメールが来たらSlack通知する」というZapは、「Gmailにメールが来たらZapを起動する」というStepと「Slackに通知する」というStepに分かれています。
各Stepを作成するとき、Appと呼ばれる設定テンプレートのようなものを選択する必要があります。たとえば、「Gmailにメールが来たらZapを起動する」というStepであれば、Zapierが用意してくれている "Gmail" というZapier内Appを使います。同様に、「Slackに通知する」というStepを作るときは "Slack" というAppを選びます。外部サービスとの連携部分を担うStepを作るには、その外部サービスに対応するAppを選び、そのAppに応じた設定をしていけばいいわけです。なお、外部サービスとの接続時には、「どのアカウントで接続するか」を設定する必要があります。Appと外部サービスアカウントとの組み合わせは、Zapier内でConnectionと呼ばれます。
抽象的な話ばかりしていても仕方がないので、実際に「Gmailにメールが来たらSlack通知する」というZapの設定をしていきましょう。
Zapierの管理画面にログインしたら、メニューバーを開きます。MAKE A ZAPをクリックしたら、Zapの新規作成画面に入ります。

"Gmail" Appを使ってトリガーとなるStepを追加する

Zapの新規作成画面に入ると、たくさんの入力欄が表示されます。
まずは左上の "Name your Zap" をクリックしてZapに名前を付けましょう。後からわかる名前であれば大丈夫です。迷ったら「GmailからSlackへの通知テスト」などとしておきます。
Zapを作成するとき、まずは「何が起きたらこのZapを実行するか」を設定するためのStepを作成します。このような最初のStepはZapierの中でトリガー(Trigger)とも呼ばれます。「Gmailにメールが来たら」というトリガーを設定するので、Choose App & Eventの項目で "Gmail" というAppを選択します。
次にChoose Trigger Eventから、Gmailの中のどんな出来事をトリガーとして使うかを選びます。「新着メールを受信したとき」だけではなく、たとえば「メールにラベルを付けたとき」や「メールにStarを付けたとき」など、あなたの操作に応じてZapを起動することもできます。ここでは、特定の検索条件にマッチするメールを受信したときに起動したいので、 "New Email Matching Search" を選択します。
次に進むと、Gmailアカウントの選択設定が出てきます。当然ながら、他の人のGmailに来たメールを勝手にあなたのSlackに通知することはできません。Zapier上であなたのGmailアカウントにログインすることで、あなたのZapierアカウントとGmailアカウントが紐付き、連携の設定ができるようになります。プルダウンを開くと表示される "+ Add a New Account" をクリックしましょう。Googleの認証画面が開くので、連携したいGmailアカウントを選択します。なお、Gmailの仕様で、 "@google.com" で終わる個人利用のアカウントでは、Zapierとの連携ができないようです。個人アカウントでも試しに連携の設定やテストをするまではできますが、実際の通知を動かすにはG Suiteで管理された仕事用のGoogleアカウントを使って認証してください。
Googleアカウントとの連携が済んだら、次はメールの検索条件を入力します。ここに条件を入れることで、すべてのメールの中から、Slackに通知するものをフィルタリングすることができます。なおこのSearch Stringの設定は、Gmailの検索ボックスの仕様に準拠しています。たとえば、 "from:" の後にメールアドレスを指定して送信元を限定したり、 "subject:" でメールタイトルに含まれる文字列を指定したりすることができます。次の画像では、例としてメルカリから来るメールの中からポイントに関するメールだけを絞り込むような設定をしてみています。設定に迷ったら、 重要なメールをあなたによく送ってくるメールアドレスを"from:" の後に指定するだけにとどめておきましょう。
ちなみに、Gmailの検索ボックスからプルダウンされる「検索オプションを表示」を使うと、GUIで検索文字列を生成することができます。Zapierで設定する検索文字列も、ここで生成されたのと同じものが使えると思われます。
ここまでで、Gmailをトリガーとして利用するStepの設定は終了です。Zapierでは、各Stepの設定の最後に、意図した通りに外部サービスと連携できるかどうかのテストをすることができます。Gmailトリガーの場合は、実際に指定したGmailアカウントのinboxの中から、指定した検索文字列にマッチする最新のメールを探してくれます。 "Test trigger" を押してみましょう。意図した通りにメールが読み込めていれば、成功です。

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

Gmailの設定が終わったら、次のStepの編集画面が開きます。今度は "Slack" というAppを選びましょう。
Choose Action Eventから、Slackに対して実施するアクションを選択します。「何をするか」を決めるためのStepは、Zapierの中でその名の通りアクション(Action)と呼ばれます。ここでは、特定のChannelにメッセージを送りたいので、 "Send Channel Message" を選択し、次に進みます。ちなみに、ここの設定を変えることで、SlackでDMを送ったり、リマインダーを追加したり、ユーザーをChannelに招待したりすることもできます。
次に、連携するSlackのアカウントを選びます。Gmailの設定と同様、通知先となるSlack Workspaceに属するSlackアカウントで認証します。
Zapier側にSlack Workspaceの情報が読み込まれたら、いよいよ実際にSlackに送る通知メッセージの設定をしていきます。たくさんの設定項目がありますが、必須なのは2つだけです。まずは、通知先のChannelを選択します。汚しても問題のない適当なChannelを選びましょう。次に、Message Textの欄に実際の通知内容を記述します。ここがZapierのすごいところですが、Step 1のGmailで受け取ったメールの情報は、なんとStep 2以降の設定の中で柔軟に利用することができます。たとえば、Slack通知のテキストの一部に、実際に来たメールのタイトルを埋め込むことができます。Message Text欄にフォーカスを当てるとInsert Data ...というプルダウンが出てきます。ここから、通知内容に埋め込みたい項目を選ぶことで、Message Text欄にその項目を挿入することができます。なおStep 1の最後で検索条件に合致するメールが取得できるかどうかのテストをしましたが、Insert Data ...の各項目にはそこで取得された実際のメールの内容がプレビュー表示されます。これによって、実際に通知される内容を想像しながら設定をすることができます。次の画像の例では、「メルカリのお得なポイント情報」と固定のタイトルを書いた上で、「メールタイトル」と「Gmailでメールを開くためのURL」を埋め込んでいます。
ここまでで、Slackの通知設定は完了です。最後に、テストを実行しましょう。今回作成したStepをテストすると、指定したChannelに対して、メールの内容を埋め込んで実際に通知を送ることができます。Slack内で通知がどのように表示されるかを、ここのテスト送信から確認することができます。今回の設定例では、次の画像のようなSlack通知がZapierから送られます。実際に、Slackに対して通知を送ることはできたでしょうか?
なお、先ほど設定したSlack通知設定の中のCustomize Channel Messageの内容を変えることで、Slackに対するメッセージの送り方をカスタマイズすることができます。たとえばAuto-Expand Links?という設定をNoにすることで、下に表示されるOGPの情報を非表示にすることができます。他にも、通知をしてくれるBotのアイコンや名前を変更できたりします。
問題なければ、最後にDone Editingをクリックし、ZAPをONにします。これで、実際にGmailで条件にマッチするメールが来たら、Slackに毎回自動で通知されるようになりました。簡単でしたね。
ちなみに前述したように、 "@google.com" で終わる個人利用のアカウントでは、現時点ではZapierとの連携ができないようです。その場合は、ZAPをONにしようとするとエラーが表示されます。

その他の通知系ユースケースを知る

今回は、Gmailに来たメールをSlackに通知するというZapierの利用例を見てみました。今回使ったGmailやSlack以外にも、Zapierには外部サービスと連携するためのAppがたくさん用意されています。ここでは「通知」に関するユースケースに限定して、いくつか紹介します。
まず通知先サービスについては、今回利用したSlack以外にも選択肢が提供されています。たとえばMicrosoft TeamsやChatworkなどの主要なビジネスチャットツールに対しては、同様にメッセージの送信をすることができます。
また、通知元についても、Gmailへのメール受信以外に、たとえば次のような外部サービス上のイベントを通知のトリガーに利用することができます。
  • Googleフォームでフォーム送信されたら通知する
  • TwitterやFacebook Pagesへの投稿内容を通知する
  • あるRSSフィードに新しいアイテムが追加されたら通知する
  • JiraやGitHubにissueが追加されたら通知する
このように、通知を受け取りたいという用途に限っても、アイデア次第で様々な自動化を実現することができます。あなたの業務の中で、「このサービスからリアルタイムでチャットツールに通知が来たら嬉しい」と思うケースは無いでしょうか?もし思いついたら、ぜひZapierで通知機能を実装してみてください。きっとすぐに、Zapier無しでは仕事ができないようになってしまいます。

APIで相互に連携しあうSaaSのエコシステム

最後に、Zapierのような「外部のWebサービスを連携して自動化するようなWebサービス」が登場した背景についても簡単に解説します。この背景を知ることで、あなたが業務で利用するアプリケーションを選ぶ基準が変わるかもしれません。
さて、万能でなんでもできるように見えるZapierにも、連携できないサービスがあります。Zapierのような外部連携プラットフォームに連携先サービスとして登録されるためには、主に次の2つの条件を満たす必要があります。
  1. 世の中で広く使われているサービスであること
  1. Webの標準的な技術を使ってそのサービスに連携できるようなAPIが、サービス提供者によって公開されていること
1つ目の条件は、よりビジネス的な問題です。たとえばZapierが新しい連携先サービスのAppを追加する場合、そこには一定のコストがかかります。Zapier内での開発コスト、連携先サービスとのコミュニケーションコスト、Appのサポートコストなどです。これらのコストを上回るリターンがなければ、Zapier社として「このサービスと連携しよう」という判断にはならないわけです。たとえば、その連携先サービスが世の中で広く使われているほど、Zapierにとっては連携することによるリターンが大きくなります。たとえば、Gmailはグローバルで広く業務に使われているメールサービスです。ZapierはGmailと連携できるようにすることで、世界中に数多くいるGmailユーザーに対してサービスの価値を上げることができます。逆に、たとえば日本の一部のレガシーな会社でしか使われていないようなメールクライアントと連携しても、ユーザーの規模が小さいので旨味も少ないわけです。
より技術的な問題に関わるのが、「APIが公開されている」という2つ目の条件です。APIが満足に提供されていないサービスの場合、そもそも外部からそのサービスの機能を利用することができません。たとえばZapier社の開発者がどんなに開発を頑張っても、その連携したいサービス側がAPIの口を持っていなければ、Zapier上のAppを作ることができないわけです。APIという言葉に耳馴染みが無い人は、APIというものが一体何なのかよくイメージが掴みにくいかもしれません。APIという言葉自体は、 "Application Programming Interface" の略で、「あるソフトウェアの機能を外部のプログラムから利用するための手段」というかなり広い意味を指します。Webサービスの文脈で使われるAPIという言葉は、主に「Webで最もよく使われるHTTPと呼ばれる通信の仕組みを使って外部のプログラムから機能を使うための手段」のことを意味します。ZapierのApp一覧に掲載されているようなGmailやSlackといったサービスは、それらの機能を外部のプログラムから利用するためのAPIを広く世の中に公開しています。それらのAPIを利用することで、Zapierのような外部のサービスから、GmailやSlackの機能を組み合わせた自動化が実現できるようになるわけです。
さて、これらの2つの条件を理解することは、業務アプリケーションの提供者だけではなく、その利用者にとっても重要です。なぜなら、「どの業務アプリケーションを使えば簡単に外部サービスと連携できるのか」を判断する指針になるからです。ある業務で使うアプリケーションを選ぶとき、その他の条件が同じであれば、より広く使われていて、かつ汎用性の高いAPIが公開されているようなサービスを選んだ方が生産性の点で有利です。Zapierなどを使ってみるとわかるように、複数のサービスを自分たちで相互に組み合わせて業務の効率化をすることが、とても簡単になってきています。いろいろな外部サービスと実際に連携しているような業務アプリケーションを選んでおくことで、いざ業務の自動化や効率化をしたくなったときの選択肢の幅が圧倒的に広くなります。
少し踏み込んだ話をすると、Zapierのようなサービスが登場した背景には、業務システムの在り方自体が大きな変化をむかえているという事実があります。ここでは便宜上、「フルパッケージ型」から「SaaS組合せ型」への変化と呼びます。
従来は、会社の中の業務をITシステム化しようとした場合、機能をたくさん持っている1つの大きな業務システムを使って複数の業務をカバーしようとするケースが一般的でした。もちろん会社の中のすべての業務を1つの業務システムで管理するのは難しいですが、カバー範囲の広い巨大なシステムを導入する例は今よりも多かったように思います。こうしたフルパッケージ型の業務システムは、機能間の連携がしやすい、1社にまるっとお願いできるので選定が楽、などのメリットがありました。しかし、ある機能が使いにくい場合に、その機能だけを別のサービスに置き換えるということがしにくい構成になっていました。またベンダーロックインされやすくシステムが高価になりがちというデメリットもありました。
近年では、特定の業務に特化したようなサービスが多く生まれてきました。それらの多くは、SaaSと呼ばれる形式で提供されています。そして餅は餅屋というように、特定業務に特化して使いやすさを追求している会社が作ったサービスの方が、より洗練されていて使いやすいというケースが増えてきました。それにともない、業務毎に自分たちで使いたいSaaSを選びそれらを組み合せて全体の業務システムを構築した方が、より柔軟で生産性が高いのではないか、と考える企業が増えてきました。しかし、そんな中で問題になったのがサービス間の相互連携です。それぞれのサービスがいかに使いやすくても、やはり実際の業務フローではサービス間の連携が必要なユースケースが必ず出てきます。別々の会社が提供するサービスを相互につなぐような連携は、1つの大きな業務システムの中の連携に比べて、ハードルが高くなってしまいます。そこで、各サービスは相互に連携するためのAPIと呼ばれる口を公開し、「SaaSを組み合せて多様な業務フローを実現したい」という要求に答えようとしたわけです。
これが、Zapierのようなサービスが生まれた背景です。ちなみに、Zapierのような外部連携に特化したプラットフォームに限らず、個々のサービスが外部連携を簡単にするための独自の仕組みを持っているケースもあります。たとえばSlack Appディレクトリや、G Suite Marketplaceなどがその例です。
これで今回のチュートリアルは終了です。今後のチュートリアルでは、通知以外のZapierの使い方について体験していきます。
 

次のチュートリアル

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