メールの自動返信、「全員に同じ文章」で送っていないか

お問い合わせフォームからのメール、請求書PDF付きのメール、画像添付のメール——受信トレイに届くメールの種類はバラバラなのに、返信は一種類。そのギャップを埋めるために手作業で振り分けている人、けっこう多い。

この記事を読めば、n8nとGmailを連携させて、添付ファイルの有無・種類・送信元ドメインによって返信内容を自動で切り替える仕組みを、1から構築できる。コピペ可能なExpression付きで解説するので、n8n初心者でも迷わず進められる。


💡 関連教材: ChatGPT業務自動化 実践テンプレート集(¥1,480) — API・スプレッドシート・メール・議事録・請求書をコピペで自動化する実装特化型テンプレート集(全22ページ)

結論から言う|この構成で動く

最短ルートを先に示す。全体のフローはこれだ。

Gmail Trigger
  └─ IFノード(添付あり?)
       ├─ True → Switchノード(MIMEタイプ判定)
       │             ├─ PDF → Gmailノードで「PDF受付」返信
       │             └─ その他 → Gmailノードで「添付確認」返信
       └─ False → Switchノード(送信元ドメイン判定)
                     ├─ 企業ドメイン → 「法人向け」返信テンプレ
                     └─ その他 → 「一般」返信テンプレ

IFノードで最初に「添付あり/なし」を二分割し、その先をSwitchノードでさらに振り分ける。この設計が一番シンプルで壊れにくい。


H2① n8nでGmail自動返信を動かす前に確認すること

OAuth2認証、2024年末以降は別物だと思った方がいい

よく見かける古いチュートリアルは「Google Cloud ConsoleでOAuth2クライアントIDを作るだけ」で終わっている。2024年末以降はそれだけでは動かない。

正直なところ、筆者も久しぶりにセットアップしたら同じ罠にはまった。「このアプリはGoogleで確認されていません」という警告が出て、7日後に認証が無効になるやつだ。

回避するための手順(Google Cloud Console側):

  1. Google Cloud Console → 「APIとサービス」→「OAuth同意画面」
  2. ユーザーの種類:外部を選択
  3. 「テストユーザー」タブで、n8nに接続するGmailアドレスを追加
  4. スコープに https://mail.google.com/ を追加(Gmailの送受信に必要)
  5. OAuth2クライアントIDを作成(アプリの種類:ウェブアプリケーション
  6. リダイレクトURIに https://[あなたのn8nドメイン]/rest/oauth2-credential/callback を追加

テストユーザーに自分のアドレスを追加してあれば、「確認済みアプリ」申請なしでも7日制限を回避できる。個人利用・社内利用ならこれで十分だ。

Gmail Triggerノードの設定

n8nの画面で「Gmail Trigger」ノードを追加したら、以下を設定する。

設定項目 推奨値 理由
Poll Times 1分ごと リアルタイム性と負荷のバランス
Filters > Label Names INBOX 受信トレイのみ監視
Download Attachments ON これをOFFにすると添付ファイルが取得できない
Simplify ON 不要なメタデータを省いてデータを扱いやすくする

「Download Attachments」をONにするのを忘れる人が非常に多い。 デフォルトはOFFなので、意識的に確認すること。OFFのままだと attachments 配列は空になり、添付ファイルの分岐が永遠にFalseになる。

よくある誤解①:n8n Cloud無料版でGmailが使えると思っている

これは誤解だ。整理すると:

  • n8n Community Edition(セルフホスト):無料でGmailノード使用可能
  • n8n Cloud 無料トライアル:期間終了後はStarter(約$24/月)以上が必要

セルフホストするならRailwayやRenderが手軽だ。DockerがわかるならVPS(月500〜1,000円)でも動く。


H2② 条件分岐の設計方針|IFとSwitchの使い分け

IFノードは「2択」専用、Switchノードは「3択以上」に使う

ここを間違えると、IFノードをネストしまくった読めないフローができあがる。旧チュートリアルに多い失敗パターンだ。

判断基準はシンプル:

  • 分岐が2つ → IFノード
  • 分岐が3つ以上 → Switchノード

3つの分岐軸と優先順位

① 添付ファイルの有無(最初に置く)

// IFノードのConditionに入力

添付ファイルの有無は処理の根本的な違いを生む。「添付あり」と「なし」では返信文面だけでなく、後続の処理フロー全体が変わる。だから一番最初に分岐させる。

② 送信元ドメイン(企業/個人の振り分け)

// Expressionでドメイン部分を取り出す


// Switchノードの条件例
// Value 1: example.co.jp → 法人向けルート
// Value 2: gmail.com → 個人向けルート
// Default → その他ルート

法人と個人で返信文面・署名・対応時間の案内を変えたい場合に使う。実務で地味に効く分岐だ。

③ 件名キーワード(問い合わせ種別の振り分け)

// 件名に「請求書」が含まれるかどうか


// Switchノードで複数キーワードを扱う場合

件名ベースの分岐は最もシンプルだが、件名が不統一だと機能しにくい。フォームから送信されるメールなど、件名が制御できる場合に特に有効だ。

どの軸を先に置くかの判断フロー

添付ファイルで処理が変わる?
  YES → まず「添付あり/なし」で分岐
  NO  → 送信元で処理が変わる?
          YES → 「ドメイン」で分岐
          NO  → 「件名キーワード」で分岐

この順番で考えれば、大半のケースで迷わない。


H2③ 添付ファイル付き自動返信の実装手順

MIMEタイプでPDF・画像・Excelを振り分ける

Switchノードを使ってMIMEタイプで分岐させる。設定箇所はSwitchノードの「Routing Rules」だ。

// Switchノードの「Value to Switch On」


// 各ルートの条件
// Route 1: application/pdf        → PDF処理ルート
// Route 2: image/jpeg             → 画像処理ルート
// Route 3: image/png              → 画像処理ルート
// Route 4: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet → Excel処理ルート
// Fallback: その他添付             → デフォルト処理

画像系(jpeg/png)を同じルートに流したい場合は、Switchの条件に正規表現を使う方法もある。

// MIMEタイプが「image/」で始まるかどうか

threadIdを引き継いで「返信」として送る

ここが自動返信特有のポイントだ。新規メールとして送ってしまうと、メールスレッドが分断される。受信者から見て「なんか変なメールが別で来た」になる。

Gmailノード(Send操作)の設定:

設定項目 入力値
Operation Reply
Message ID ``
Thread ID ``
To ``
Subject Re:

OperationをReplyに設定し、必ずthreadIdを渡すこと。 ここをSendのままにしている記事が多いが、それだと返信スレッドに乗らない。

返信本文をノードごとに変える実装例

PDF受付の返信文(Code/Expressionノードで生成):

// Code ノード(JavaScript)
const senderName = $input.item.json.from.split('<')[0].trim() || 'お客様';
const subject = $input.item.json.subject;
const attachmentName = $input.item.json.attachments[0]?.filename || '添付ファイル';

const body = `${senderName} 様

お世話になっております。
「${subject}」についてのご連絡、受領いたしました。

添付いただいた「${attachmentName}」を確認のうえ、
2営業日以内にご返答申し上げます。

ご不明な点がございましたはお気軽にご連絡ください。

---
株式会社〇〇 担当者名
`;

return [{ json: { body } }];

このCodeノードの出力を、GmailノードのMessage Bodyに `` で渡す。送信者名や添付ファイル名が動的に入る点が、固定テンプレとの大きな違いだ。


H2④ よくある失敗と正直なデメリット

失敗① Gmail側の自動返信と二重に動く

Gmailの設定(Settings → General → Vacation responder)を有効にしたままn8nの自動返信も動かすと、受信者に2通届く。n8nを使うならGmail側の自動返信は必ずOFFにすること。

失敗② attachmentsが空配列のままになる

前述の「Download Attachments」をOFFのまま進めてしまうと、$json.attachments[] になる。attachments.length > 0 は常にFalseになり、全メールが「添付なし」ルートに流れる。動いているのに添付分岐が効かない場合はここを疑う。

失敗③ 添付ファイルが複数枚のとき最初の1枚しか見ない

$json.attachments[0].mimeType は最初の添付ファイルしか見ない。複数添付のメールを扱う場合は、「Loop Over Items」ノードで配列をループさせる必要がある。これを知らずに「2枚目の添付が処理されない」と詰まる人が多い。

正直なデメリット|n8nで自動返信を運用するリアル

  • 初期設定に2〜4時間かかる:認証周りで詰まるのが主な原因
  • OAuth2の7日制限:本番利用時はGoogleのアプリ審査を経るか、テストユーザー管理が必要
  • ポーリング遅延:1分ポーリングなら最大1分の遅延が発生。「即時返信」とは言いにくい
  • Gmail API 25MB制限:添付ファイルが25MBを超えると取得できない(これはn8nではなくGmailの仕様)

H2⑤ IFノード・Switchノードの実装比較表

観点 IFノード Switchノード
分岐数 2つ固定(True/False) 最大10ルート+Fallback
設定のしやすさ 直感的で簡単 ルール定義が少し多い
複雑な条件 ネストが必要で可読性が下がる 1ノードで完結
推奨ケース 添付あり/なしなど二択 MIMEタイプ・ドメイン別振り分け
n8n v1系での挙動 安定 v1.x以降でUIが変更されたが機能は同等

3種類以上の条件に対してIFノードをネストするのは、フローが縦に伸びて読めなくなる。保守性を考えるなら最初からSwitchノードを選ぶべきだ。


H2⑥ よくある質問

Q1. n8n Community Editionでこの構成は動くか?

動く。セルフホストのCommunity EditionはGmailノードが使用可能で、利用制限もない。ただしOAuth2の設定はGoogle Cloud Console側で必要なため、その手順は省略できない。RailwayやRenderなら月数百円〜で動かせる。

Q2. ポーリングではなくWebhookでリアルタイム受信できるか?

Gmail APIはプッシュ通知(Pub/Sub)に対応しているが、n8nのGmail Triggerノードは現時点でポーリング方式のみだ。リアルタイム性が必要な場合は、Google Apps Scriptでn8nのWebhookを叩く構成を組む方法が現実的な回避策になる。

Q3. 添付ファイルを自動返信のメールに添付して送り返せるか?

できる。Gmail Triggerで取得したバイナリデータ($binary.attachment_0 など)をそのままGmail SendノードのAttachmentsに渡せば、受け取ったファイルを別の宛先に転送することも可能だ。ただし25MBの上限は送信時にも適用される。

Q4. 同じ差出人からのメールに無限ループで返信してしまわないか?

発生しうる問題だ。対策は2つある。①Gmail TriggerのFilter設定で「Label: INBOX」に限定し、自分が送ったメールには反応しないようにする。②Codeノードで $json.from に自分のアドレスが含まれる場合はスキップする処理を入れる。本番運用前に必ず確認すること。


まとめ|今日やること1つだけ

この記事で解説した構成のポイントを振り返る。

  • Gmail Triggerは「Download Attachments: ON」が前提
  • 最初のIFノードで「添付あり/なし」を分岐させる
  • 3種類以上の条件はSwitchノードに任せる
  • GmailノードはOperation: Replyを使い、threadIdを必ず渡す
  • Gmail側の自動返信はOFFにしておく

今日やること:Google Cloud ConsoleでOAuth2クライアントIDを作り、テストユーザーに自分のアドレスを追加する。 これだけで認証の詰まりの9割は解消される。フロー設計はその後でいい。

n8nのセルフホスト環境がまだ整っていない場合は、Railway上へのn8nデプロイ手順の記事から読むと詰まらずに進められる。


📘 もっと深く学びたい方へ

この記事で紹介した内容を、さらに体系的に・実務レベルで習得できる教材を販売中です。

ChatGPT業務自動化 実践テンプレート集(¥1,480)

API・スプレッドシート・メール・議事録・請求書をコピペで自動化する実装特化型テンプレート集(全22ページ)

  • 動くGASコード・API設定手順・プロンプトをワンセット収録
  • スプレッドシート連携/メール/議事録/請求書を実務レベルで自動化
  • コピペで即動く実装コード(Python / GAS)付き

👉 今すぐ購入する

ChatGPT&Claude AIプロンプト集50選(¥980)

コピペで即使える実践プロンプト50種を全24ページに凝縮

  • ビジネスメール・企画書・分析・コーディング等 8カテゴリ網羅
  • ChatGPT / Claude / Gemini 全対応
  • 変数を埋めるだけで即実務投入

👉 今すぐ購入する


関連記事


関連ツール紹介

ブログ記事を効率的に量産するならValue AI Writer byGMOがSEO記事の自動生成に使える。月額1,650円から利用可能。

おすすめツールの一覧はこちらにまとめている。