Gmailの重要メールを見逃さない。n8nでSlack通知を自動化する
本記事では、n8nでGmailの受信をトリガーにし、件名で条件分岐を行い、特定の条件に該当したメールのみをSlackへ自動投稿するフローを作成し、動作確認を行います。
想定するユースケースは、障害通知メールを受信するメールアカウントにおいて、緊急度の高い障害のみをSlackへ通知する運用監視です。
おそらく皆さまの業務においても、「必要なメールだけをSlackなどのチャンネルに連携したい」というニーズは一定数あるのではないでしょうか。
1. システム構成
Docker版のn8nをローカル環境で起動し、ngrokを経由して以下のAPIと通信します。
Gmailを管理する Google APIs
Slack API

2. システムの構築
ngrokおよびn8nの起動、ならびにGmailトリガーの基本設定までは、以下の記事をご参照ください。
本記事では、Gmail Triggerノードを作成した後の工程から解説していきます。
3. フローの作成

まず、Gmail Triggerノードの「Open」をクリックして設定画面を開きます。

「Filters」で Search を選択します。

「Search」欄に以下を入力します。
subject:"critical"今回は例として critical を指定していますが、error や 危険 など、検知したいキーワードに応じて適宜変更してください。
なお、subject は件名を対象とした検索になります。本文を検索したい場合は、subject の代わりに text を指定してください。

次に、Gmail Triggerノード右側の「+」をクリックし、検索窓に IF と入力して IFノードを追加します。

「Conditions」に以下を入力します。
{{$json["subject"]}}
比較条件の「is equal to」をクリックし、String → contains を選択します。
右側のテキスト欄に critical(検知したいキーワード)を入力します。
条件を追加したい場合は、「Add Condition」をクリックして複数条件を設定できます。

4. Slack認証情報の設定
画面左側の「+」ボタンから Credential をクリックします。

検索欄に Slack と入力し、Slack OAuth2 API を選択します。

表示される OAuth Redirect URL は後ほど使用するため、メモしておきます。
別のブラウザタブを開き、Slack API の画面にアクセスします。

「Create an App」をクリックします。

「From a manifest」を選択します。

投稿先となるWorkspaceを選択し、「Next」をクリックします。

表示される Client ID と Client Secret をメモしておきます。
左側メニューから OAuth & Permissions を選択します。

先ほどn8nでメモした OAuth Redirect URL を「Redirect URLs」に貼り付け、「Add」をクリックします。

「許可する」をクリックします。
画面をスクロールし、「Scopes」欄で以下を設定します。
chat:write
channels:read



設定後、「Reinstall to <Workspace名>」をクリックします。
5. フローの作成(続き)
n8nの画面に戻ります。

メモしておいた Client ID と Client Secret を入力し、「Connect my account」をクリックします。

「許可する」をクリックし、「Account Connected」と表示されることを確認します。

IFノード右側の「+」をクリックし、Slack と入力して Send a message を選択します。

投稿先のSlackチャンネルを選択します。

「Message Type」で Attachments を選択します。
「Attachments」欄で以下を設定します。
Title
{{ $json.subject }}Text
{{ $json.text }}
画面右上の「Save」をクリックし、ワークフローを Active に変更します。
6. 動作確認
件名にキーワードが含まれるメールと、含まれないメールをGmail宛に送信します。


キーワードを含むメールが受信されてから、約1分後にSlackへ自動投稿されることを確認できました。

また、キーワードを含まないメールについては、Slackへ投稿されないことも確認できました。
7. まとめ
本記事では、Gmailの受信をトリガーに、件名や本文に特定のキーワードを含むメールのみをSlackへ自動投稿するフローを作成し、動作確認を行いました。
実際の運用現場では、ログや障害通知がメールで送られてくるものの、対応が必要なものと不要なものが混在し、人手で確認しているケースはいまだ多く見られます。
本記事が、皆さまの業務自動化や運用改善のヒントとなれば幸いです。
8. 補足
本フローではGmail TriggerのFilterとIFノードの両方で件名の条件判定を行っています。
どちらか一方でも十分ですが、例示のためこの構成を採用しました。
ご了承ください。
