Googleフォームでお問い合わせや申し込みを受け付けていると、「あれ、いつの間に届いてたの?」と焦ること、ありませんか?
- 回答が届いたことに、数時間たってから気づいた
- 「依頼」のような大事な回答だけ、すぐに知りたい
- フォームを開いて回答を確認するのが、毎日の小さな手間になっている
どれも小さなことですが、積み重なるとけっこう気になりますよね。この「見張り番」を、n8nにお願いしてしまいましょう。
Googleフォームに回答が届いたら、n8nが自動で検知して、条件に合う回答だけメールとSlackに通知する仕組みを作ります。トリガーの選び方、条件分岐、うまく動かないときの確認方法まで、順番に設定していきます。
所要時間の目安は約30分(アカウント連携を含む)です。
全体像:フォーム → スプレッドシート → n8n → 通知
Googleフォームの回答は、スプレッドシートに自動で記録できます。そのシートに新しい行が増えたら、n8nが気づいてくれる形にします。
| 順番 | n8nのノード | やること |
|---|---|---|
| 1 | Google Sheets Trigger | 回答シートに新しい行が追加されたら開始する |
| 2 | If | 「ご用件の種類」が「依頼」のときだけ先へ進める |
| 3 | Gmail | 自分宛てに通知メールを送る |
| 4 | Slack | 指定したチャンネルにメッセージを送る |
「起きたら動く」トリガーの種類を整理したい方は、こちらの記事もどうぞ。
n8nのトリガー設計|Webhookで始める「起きたら動く」自動化
準備:フォームと回答シートを用意する
1. ダミーのフォームを作る
次の4項目のフォームを作ってみましょう(テスト用なので、どんな内容でもOKです)。
- お名前(記述式)
- メールアドレス(記述式)
- ご用件の種類(ラジオボタン:質問/依頼/その他)
- 内容(段落)
2. 回答をスプレッドシートに記録する
- フォームの「回答」タブを開く
- 「スプレッドシートにリンク」を押して、新しいスプレッドシートを作る
- テストとして、フォームから1件回答を送る
シートの列は、次のようになります。n8nではこの列名をそのまま使います。
| タイムスタンプ | お名前 | メールアドレス | ご用件の種類 | 内容 |
|---|---|---|---|---|
| 2026/10/26 9:30:12 | 山田 太郎 | [email protected] | 依頼 | 見積もりをお願いします |
1行目が見出し(列名)、2行目以降が回答です。回答が届くたびに、シートの末尾へ新しい行が追加されます。
手順1:Google Sheets Trigger を設定する
- n8nで新しいワークフローを作り、「Add first step」から「Google Sheets Trigger」を選ぶ(ボタンの表記はバージョンによって少し違います)
- 「Credential to connect with」で、Googleアカウントを連携する(OAuth2。n8n Cloudでは「Sign in with Google」を押すだけで連携できます。セルフホスト版では、Google Cloudで作成したクライアントIDとシークレットが必要です)
- 次のように設定する
| 項目 | 設定 |
|---|---|
| Document | 先ほどの回答シートのスプレッドシートを選ぶ |
| Sheet | 回答が入っているシート(「フォームの回答 1」) |
| Trigger On | Row Added |
| Poll Times | 「Add Poll Time」を押し、Mode を Every Minute にする(動作確認用。慣れたら Every Hour などに変更) |
- テストイベントを取得して(「Fetch Test Event」などのボタンで実行します)、右側の出力に回答の1行が表示されることを確認する
取得できた行では、「タイムスタンプ」「お名前」など、シートの列名がそのまま項目名として並びます。この項目名を、次の手順以降で使います。
Row Added を選ぶと、決めた間隔でシートを見に行って、新しく追加された行を流してくれます。Googleアカウントの連携は最初ちょっと戸惑いやすいところですが、一度つないでおけば、次からは選ぶだけです。
手順2:Ifノードで「依頼」だけを通す
- Google Sheets Triggerの右の「+」から「If」を追加する
- Conditions に、左の欄へ「ご用件の種類」を(左のデータからドラッグして)入れる。ドラッグすると、
{{ $json["ご用件の種類"] }}の形で入ります - 比較は String の「is equal to」にして、右の欄に
依頼と入力する - 「Add condition」でもう1つ追加し、「メールアドレス」が「is not empty」としておく(AND条件)。欄の名前や並びは、バージョンによって少し違います
条件に合うと「true」の線へ、合わないと「false」の線へ進みます。今回は「true」だけにつなぎます。「false」には何もつながないので、「質問」や「その他」の回答は通知されません。
ノードの「Execute step」で試してみましょう。「依頼」の行は「true」側に、それ以外の行は「false」側に表示されます。
手順3:Gmailで通知メールを送る
まずは「true」の線の先に、「Gmail」ノードを追加しましょう。
| 項目 | 設定 |
|---|---|
| Credential to connect with | Googleアカウントを連携する |
| Resource | Message |
| Operation | Send |
| To | 通知を受け取る自分のメールアドレス |
| Subject | 【新着依頼】{{ $json["お名前"] }}さんから回答が届きました |
| Email Type | Text |
メールの末尾に「This email was sent automatically with n8n」という一文が付くことがあります。気になる場合は、Options の「Append n8n attribution」をオフにすれば消せます。
Message には、次のように入力します。{{ }} の中は、左のデータからドラッグすると入力できます。
- 1
- 2
- 3
- 4
- 5
- 6
新しいフォーム回答が届きました。
お名前:{{ $json["お名前"] }}
メール:{{ $json["メールアドレス"] }}
種類:{{ $json["ご用件の種類"] }}
内容:{{ $json["内容"] }}手順4:Slackにも同じ内容を送る
次は、Ifノードの「true」からもう1本線を引いて、「Slack」ノードを追加しましょう。
| 項目 | 設定 |
|---|---|
| Credential to connect with | Slackワークスペースを連携する |
| Resource | Message |
| Operation | Send |
| Send Message To | Channel |
| Channel | 通知を送りたいチャンネル(例:#フォーム通知) |
| Message Type | Simple Text Message |
| Message Text | 下の文面 |
- 1
- 2
- 3
新しい依頼が届きました
お名前:{{ $json["お名前"] }}
内容:{{ $json["内容"] }}Slackにはワークフローへのリンクが付くことがあります。不要なときは、オプションの「Include Link to Workflow」をオフにすればOKです。
手順5:公開して、実際に回答を送ってみる
- 画面上部の「Publish」を押し、表示される画面でもう一度「Publish」を押して、ワークフローを本番で動かす(n8n 2.0より前のバージョンでは、「Active」のスイッチをオンにします)
- フォームから、ご用件の種類を「依頼」にしたテスト回答を送る
- 設定した間隔のあとに、メールとSlackに通知が届けば完成
ここで、気をつけてほしいことが2つあります。
- 公開した後に追加された行から通知されます。公開前にすでにあった回答は通知されません
- 「質問」で送ったテストは通知されません(Ifで除外されるため)
あわせて、n8nの「Executions」タブも見てみましょう。今回の実行が1件増えています。実行をクリックすると、各ノードを通ったデータを確認できます。
失敗したときの見つけ方
1. Executionsで確認する
ワークフロー画面上部の「Executions」タブに、実行の履歴が並びます。失敗した実行は、どのノードで止まったかを開いて確認できます。通知が届かないときは、まずここを見てみてください。
2. 失敗を自分に知らせる(エラーワークフロー)
失敗に気づけるように、失敗したら知らせてくれる別のワークフローを作っておくと安心です。
- 新しいワークフローに「Error Trigger」を置き、SlackかGmailのノードをつないで、名前を付けて保存する
- 監視したいワークフロー(今回のフォーム通知)を開き、「…」(Options)から「Settings」を開く。「Error workflow」で、先ほどのワークフローを選んで保存する
つまずきやすい点
動かないときは、まずこの表を見てみてください。よくあるつまずきを集めました。
| 症状 | 原因 | 対処 |
|---|---|---|
| 通知が来ない | 公開(Publish/Active)していない | 公開してから、新しく回答を送る |
| 前からあった回答が通知されない | 公開前の行は対象外 | 仕様のため、テスト回答を新しく送る |
| 回答が来ているのにIfで止まる | 「依頼」の表記ゆれ(全角半角、空白)やフォームの選択肢の違い | Executionsで実際の値を確認し、条件の文字を合わせる |
| Slackに送れない | アプリにチャンネルへの投稿権限がない、チャンネルにアプリを追加していない | chat:write などの権限を確認し、チャンネルにアプリを追加する |
| 列名を変えたら値が取れなくなった | {{ $json["お名前"] }} の列名が、シートと一致していない | シートの見出しと、式の列名をそろえる |
まとめ
- Googleフォームの回答は、回答シートを経由して、Google Sheets Triggerで検知できる
- Ifで条件を絞ると、必要な通知だけを受け取れる
- 公開後に増えた行が対象。動かないときは Executions とエラーワークフローで確認する
次の一歩は、自分のフォームで「すぐ知りたい回答」の条件を1つ決めて、Ifノードに入れてみることです。最初は条件1つだけで十分です。一緒に、少しずつ育てていきましょう。
関連する本・記事
フォームの回答やスプレッドシートを起点に、仕事の手作業をさらに減らしたい方は、『Google Apps Script × 生成AI 全自動仕事術』も参考になります。GASと生成AIを組み合わせた自動化の考え方に触れたい方向けの1冊です。
- n8nの次は、別のワークフローも見てみたい方:n8n入門:RSS→AI要約→下書き作成までをノーコードで自動化する流れ
- 本の一覧から選びたい方:biliotechまわりのKindle著書リスト