見出し画像

Gmailの重要メールを見逃さない。n8nでSlack通知を自動化する

本記事では、n8nでGmailの受信をトリガーにし、件名で条件分岐を行い、特定の条件に該当したメールのみをSlackへ自動投稿するフローを作成し、動作確認を行います。

想定するユースケースは、障害通知メールを受信するメールアカウントにおいて、緊急度の高い障害のみをSlackへ通知する運用監視です。
おそらく皆さまの業務においても、「必要なメールだけをSlackなどのチャンネルに連携したい」というニーズは一定数あるのではないでしょうか。



1. システム構成

Docker版のn8nをローカル環境で起動し、ngrokを経由して以下のAPIと通信します。

  • Gmailを管理する Google APIs

  • Slack API

図1. システム構成図

2. システムの構築

ngrokおよびn8nの起動、ならびにGmailトリガーの基本設定までは、以下の記事をご参照ください。

本記事では、Gmail Triggerノードを作成した後の工程から解説していきます。


3. フローの作成

画面1. ワークフロー画面

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

画面2. Gmail Trigger画面

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

画面3. Gmail Trigger画面2

「Search」欄に以下を入力します。

subject:"critical"

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

画面4. ワークフロー画面2

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

画面5. IF画面

「Conditions」に以下を入力します。

{{$json["subject"]}}
画面6. IF画面2

比較条件の「is equal to」をクリックし、String → contains を選択します。

右側のテキスト欄に critical(検知したいキーワード)を入力します。
条件を追加したい場合は、「Add Condition」をクリックして複数条件を設定できます。

画面7. ワークフロー画面

4. Slack認証情報の設定

画面左側の「+」ボタンから Credential をクリックします。

画面8. Add New Credential画面

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

画面9. Slack account画面

表示される OAuth Redirect URL は後ほど使用するため、メモしておきます。

別のブラウザタブを開き、Slack API の画面にアクセスします。

画面10. Slack API画面

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

画面11. Create an App画面

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

画面12. Pick a workspace画面

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

画面13. App Credential画面

表示される Client IDClient Secret をメモしておきます。

左側メニューから OAuth & Permissions を選択します。

画面14_Redirect URLs画面

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

画面15. アクセス許可画面

「許可する」をクリックします。

画面をスクロールし、「Scopes」欄で以下を設定します。

  • chat:write

  • channels:read

画面16. Scopes画面
画面17. Scopes画面2
画面18. Reinstall画面

設定後、「Reinstall to <Workspace名>」をクリックします。


5. フローの作成(続き)

n8nの画面に戻ります。

画面19. Slack account画面

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

画面20. アクセス許可画面

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

画面21. ワークフロー画面

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

画面22. Send a message画面

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

画面23. Send a message画面

「Message Type」で Attachments を選択します。

「Attachments」欄で以下を設定します。

  • Title

{{ $json.subject }}
  • Text

{{ $json.text }}
画面24. ワークフロー画面

画面右上の「Save」をクリックし、ワークフローを Active に変更します。


6. 動作確認

件名にキーワードが含まれるメールと、含まれないメールをGmail宛に送信します。

画面25. キーワードありメール
画面26. キーワードなしメール

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

画面27. Slack画面

また、キーワードを含まないメールについては、Slackへ投稿されないことも確認できました。


7. まとめ

本記事では、Gmailの受信をトリガーに、件名や本文に特定のキーワードを含むメールのみをSlackへ自動投稿するフローを作成し、動作確認を行いました。

実際の運用現場では、ログや障害通知がメールで送られてくるものの、対応が必要なものと不要なものが混在し、人手で確認しているケースはいまだ多く見られます。

本記事が、皆さまの業務自動化や運用改善のヒントとなれば幸いです。


8. 補足

本フローではGmail TriggerのFilterとIFノードの両方で件名の条件判定を行っています。
どちらか一方でも十分ですが、例示のためこの構成を採用しました。
ご了承ください。


いいなと思ったら応援しよう!