n8n でSlack通知を自動化する方法:特定イベントを即座に知らせる設定

自動化・ノーコード

※本記事にはアフィリエイトリンクが含まれます。

フォームから依頼が来るたびにGmailを開いて確認していた。1日に何度もブラウザを切り替えるのが地味にストレスで、Slack通知に移行した。

設定自体は40分ほど。ただ、初回は必ずどこかで詰まる。詰まりやすいポイントを先に知っておくと、半分の時間で終わる。

この記事でわかること:

slack notification automation workflow
Photo by Campaign Creators on Unsplash

n8n × Slack 連携でやること・やらないこと

Slack Webhook(Incoming Webhook)とBot、どちらを使うべきか

SlackをAPIで操作する方法は大きく2つある。

Incoming Webhook:「このURLに投げればSlackに通知できる」シンプルな仕組み。設定が5分で終わる。ただし、通知先のチャンネルを動的に変更できない。最初はこっちで試した。

Slack App(Bot API):アプリを作成してBot Tokenを発行する方式。設定に15〜20分かかるが、チャンネルを条件によって切り替えたり、メッセージの内容を細かく制御できたりする。n8nのSlackノードはBot APIに対応している。

結論として、僕はBot APIを使っている。理由は「通知先のチャンネルを動的に切り替えたい」という要件が出てきたから。Incoming Webhookではそれができなかった。「特定チャンネルへの固定通知だけでいい」なら、Incoming Webhookの方が早くて楽だ。


Slack側の準備:Bot Tokenの取得手順

Slack Appの作成とOAuth Scopeの設定

  1. Slack APIページ(api.slack.com/apps)にアクセスし、「Create New App」→「From scratch」を選択
  2. App Nameを入力し、対象のWorkspaceを選択して「Create App」
  3. 左メニューから「OAuth & Permissions」を選択
  4. 「Bot Token Scopes」の「Add an OAuth Scope」から以下を追加する:
スコープ 用途
chat:write チャンネルへのメッセージ投稿(Botがメンバーのチャンネルのみ)
chat:write.public すべての公開チャンネルへの投稿(Botをチャンネルに追加しなくてもOK)

注意: chat:write だけ追加してもパブリックチャンネルに投稿できずエラーになることがある。chat:write.public を一緒に追加しておくと詰まらない。

Bot User OAuth Tokenをコピーする

スコープを設定したら、画面上部の「Install to Workspace」をクリックしてアプリをインストール。

インストール後、「Bot User OAuth Token」が表示される。xoxb- から始まる文字列がそれ。この値をコピーして控えておく。

ここを忘れがちなポイント: アプリを作成しただけでは動かない。「ワークスペースへのインストール」を完了させて初めてBot Tokenが機能する。


n8n側の設定:Slack Credentialの登録とノードの設置

Credentialsに登録する手順

  1. n8nの管理画面で「Credentials」→「Add Credential」
  2. 「Slack」を選択
  3. 「Access Token」にSlackでコピーしたBot User OAuth Token(xoxb-...)を貼り付け
  4. 「Save」して保存

保存後、Credentialのテストボタンで「Connection successful」と表示されればOK。

Slackノードの設定(チャンネル指定・メッセージ形式)

Slackノードをワークフローに追加し、以下を設定する:

チャンネルIDの確認方法: チャンネル名(#general等)を直接入力するとエラーになることがある。チャンネル名を右クリック→「チャンネルの詳細を表示」→最下部にチャンネルIDが表示されるのでそちらを使う(C12345ABCDE形式)。

ここは詰まった人が多いポイントで、「チャンネル名で動かない」→「IDに変えたら動いた」という経験をした人は多いと思う。


実務で使っている3つの通知パターン

workflow notification patterns
Photo by Unsplash on Unsplash

パターン1:フォーム送信があったら即時通知

Google FormsやTypeformで問い合わせが届いたらSlackに飛ばす。

ワークフローの構成:

Gmail Trigger(新着メール検知)→ Slackノード(通知送信)

または:

Webhook Trigger(フォームのWebhook)→ Slackノード(通知送信)

メッセージには送信者名・件名・本文の冒頭を含めると、Slack上で内容の概要がわかって便利だ。

これで問い合わせへの平均返信時間が2時間から30分以内になった。Gmailを能動的に開かなくてよくなっただけで、体感できるほど変わった。

パターン2:スプレッドシートの行追加を検知して通知

Google スプレッドシートに新しい行が追加されたときに通知する。外注先が作業進捗を入力したタイミングで知らせてほしい、という場合に使える。

ワークフローの構成:

Google Sheets Trigger(行追加を検知)→ Slackノード(通知送信)

「誰が・何の作業を完了したか」をメッセージに含めると、Slack上でそのまま進捗確認ができる。

slack bot schedule workflow
Photo by Unsplash on Unsplash

パターン3:毎朝決まった時間に定時レポートを送る

Schedule Trigger(Cron式)を使って、毎朝9時に前日のスプレッドシートのデータサマリーをSlackに送信する。

ワークフローの構成:

Schedule Trigger(毎朝9:00)→ Google Sheets(データ取得)→ Slackノード(レポート送信)

Cron式で 0 9 * * 1-5(平日の9時)のように設定できる。これは3パターンの中で一番「設定して良かった」と感じているやつで、朝の状況確認が10秒で終わるようになった。


設定後に詰まったこと(正直な失敗談)

最初にIncoming Webhookで設定したが、「クライアント別にSlackチャンネルを分けたい」という要件が出てきた時点で詰まった。Incoming Webhookは宛先チャンネルが固定なので、条件によって送り先を変えられない。Bot APIに移行するしかなかった。

最初からBot APIで設定しておけば良かった。Incoming Webhookが「簡単に設定できる」のは事実だが、あとで要件が増えるなら最初からBot APIを選ぶ方がトータルで楽だ。

あと、Slack Botをチャンネルに招待するのを忘れていて、「送信しているはずなのに通知が来ない」というミスもした。Bot APIを使う場合、BotをSlackの対象チャンネルに招待しないとメッセージが届かない(chat:write.public を使えばこの手間は省ける)。


まとめ

設定についての詳しい情報はn8n関連のZenn記事n8n関連のQiita記事も参考になる。

設定の手順をまとめると:

  1. Slack APIページ(api.slack.com/apps)でApp作成 → Bot Token Scopeに chat:writechat:write.public を追加
  2. ワークスペースにインストール → Bot User OAuth Tokenをコピー
  3. n8n の Credentials に登録
  4. Slackノードを追加 → チャンネルIDを指定 → テスト実行

「チャンネル名でエラー → IDに変更」「スコープが足りない → chat:write.public を追加」の2点さえ知っていれば、初回でも30分かからずに動かせると思う。


合わせて読みたい
n8n の使い方入門:インストールから最初のワークフロー作成まで図解
n8n をセルフホストで動かす方法:VPSへのデプロイ手順を図解で解説

コメント

タイトルとURLをコピーしました