Gmail と Slack を連携して受信を自動で通知する方法|条件で絞る手順

取引先からのメールを Slack で見られるようにしたいものの、全部を流すとチャンネルが埋まってしまう。この記事は、そう悩んでいる業務担当者に向けて、条件に合うメールだけを Slack へ通知する手順を説明します。

結論

Samurai App のワークフローで、Gmail の「New Gmail Message Received Trigger」を起動のきっかけにし、「通知先へ送る」ステップで Slack の Incoming Webhook へ送ります。「通知先へ送る」はモデルを呼びません。

  • できること: Gmail の検索条件で絞ったメールの件名、差出人、本文を Slack へ流す
  • できないこと: 受信してすぐの通知。Gmail は定期的に見に行く方式で、最大 15 分遅れます
  • できないこと: 同じ通知先から複数のチャンネルへの振り分け。チャンネルごとに通知先を分けます

できること・できないこと

絞り込みは query が本命です。 絞り込みの欄には query と labelIds があります。query は Gmail の検索窓と同じ書き方で、from: subject: has:attachment -(除外)OR が使えます。labelIds が受けるのはラベル ID を 1 つだけで、query を入れると query が優先されます。

絞らないと、受信したメールの数だけ費用がかかります。 サービス連携は 1 件受けるごとに約 0.5 円かかり、何も走らなくても同じです。件数の多いメールボックスほど、先に条件を決めてください。

Slack 側のチャンネルは URL で固定です。 Incoming Webhook の投稿先は作るときに選んだチャンネルで、送る側から変えられません。投稿をあとから削除することもできません。

届く項目は決まっていますが、必ず入るとは限りません。 公式の一覧にある項目は subject(件名)、sender(差出人)、message_text(本文)、to(宛先)、attachment_list(添付の一覧)、message_timestamp(日時)、thread_id などで、すべて任意の扱いです。本文に差し込んだ項目が届いた内容に無いと、そのステップは空のまま送らず失敗します。

用意するもの

  • Gmail のアカウントと、Samurai App の「コネクタ」での Gmail の接続
  • Slack の Incoming Webhook の URL(https:// で始まるもの)
  • ワークフローにサービス連携を付けられる権限(マネージャー以上)

手順

完成すると、次のようなワークフローになります。

Gmail の受信を Slack へ送るワークフローの編集画面

1. Slack で Incoming Webhook の URL を作る

Slack のアプリ設定で「Incoming Webhooks」をオンにし、「Add New Webhook to Workspace」から投稿先のチャンネルを選んで許可します。出てきた URL は秘密の値として扱います。Slack は漏れた URL を探して無効にしています。

2. 通知先に登録する

「設定」の「通知」にある通知先の登録画面

「設定」→「通知」の「通知先」で、名前と URL を登録します。登録した URL は二度と表示されません。「テスト送信」で 1 通届くことを確認します。

3. Gmail を接続する

「コネクタ」の画面で Gmail を「追加」し、自分のアカウントで連携します。コネクタの追加は管理者とマネージャーの操作です。

4. ワークフローを作る

「ワークフロー」の「新規作成」で下書きを作り、ステップを選んでいない状態の「設定」にある「ワークフローの入力」で、「入力の項目を追加」から名前 event、種類「項目の組」を足します。届いた内容はこの event に入ります。

続けて「つなぐ」の「通知先へ送る」を足し、手順 2 の通知先を選んで「本文」を書きます。

新着メール: {{input.event.subject}}
差出人: {{input.event.sender}}

本文全体を流すなら {{input.event.message_text}} を足せますが、メールの中身がそのチャンネルの全員に見えます。最初は件名と差出人だけにして、必要になってから足すことをおすすめします。

「保存」したあと、「バージョン」タブの「バージョン N を公開」で公開します。自動実行は公開したバージョンで動きます。

5. 起動を付けて絞り込む

「トリガー」タブの「サービス連携を追加」を押します。

  1. 「どのサービスを監視するか」で手順 3 の Gmail を選ぶ
  2. 「どうなったら動かすか」で「New Gmail Message Received Trigger」を選ぶ
  3. 「絞り込み」の query に、Gmail の検索窓と同じ条件を入れる
from:billing@example.com OR subject:至急

入れる前に Gmail の検索窓で同じ条件を試し、狙ったメールだけが出ることを確認してください。

6. 試す

条件に合うメールを自分宛てに送り、最大 15 分待ちます。実行の結果は、ワークフローの「実行」タブの「最近の実行」に「出来事で起動」として残ります。

チャットで作る場合は、「Gmail に billing@example.com から届いたメールの件名と差出人を、通知先の営業チャンネルへ送るワークフローを作って」のように頼めます。公開とトリガーの登録は、上の手順 4 と 5 で確認してください。

動かないとき

  • 「通知先」の行に「宛先の URL が見つかりません。URL を確かめてください(404)」と出る: Webhook の URL が違うか、Slack 側で無効になっています。Slack で作り直し、通知先の「編集」で新しい URL を入れます
  • 実行が失敗し、差し込んだ値が無いと出る: そのメールに無い項目を本文で参照しています。「最近の実行」で入力を開いて届いた項目を確認し、本文の項目名を合わせます
  • 何も起きない: ワークフローが公開されていないと、トリガーは実行を始めません。公開してもすぐには動かないので 15 分待ち、それでも動かなければ query を Gmail の検索窓で試し直します
  • Slack が送信を断る: 公式の一覧では、アーカイブしたチャンネルは channel_is_archived、無効になった Webhook は no_service、管理者の制限は action_prohibited です。チャンネルと Slack の管理設定を確認します

よくある質問

複数のチャンネルに分けて流せますか

Webhook の投稿先は 1 つのチャンネルに固定なので、チャンネルごとに Webhook と通知先を作ります。「条件分岐」でステップを分けるか、条件ごとに別のワークフローとトリガーを作ります。

15 分より早くできますか

Gmail の起動は定期的に見に行く方式で、最大 15 分遅れます。急ぎのメールに頼る使い方には向きません。

Slack に出した通知は消せますか

Incoming Webhook には投稿を削除する機能がありません。Slack の画面から削除してください。

関連する使い方

出典

関連する機能AIでワークフロー自動化 —— 定型業務を決めた順にSamurai App のワークフローは、書いたとおりの順に必ず動くステップの並びです。AI の判断、承認待ち、外部サービスの操作を 1 本にまとめ、定期実行や外部からの起動で定型業務を自動化します。

ほかの自動化の例

Slack の連携と自動化の方法をすべて見る

Gmail の連携と自動化の方法をすべて見る

活用術の記事一覧へ

日々の仕事が集まり、つながり、会社の力になる。

資料請求Samurai App を開く

デモを見る資料請求