Gmailの添付ファイル、毎回手動で保存していませんか?

請求書、契約書、写真データ——メールに届く添付ファイルを「あとでまとめてドライブに上げよう」と思いながら、気づいたら数十件溜まっている。そんな経験、正直かなりある。

n8nを使えば、Gmailに届いた添付ファイルをGoogleドライブへ全自動で保存できる。この記事では、Google Cloud Consoleの設定からノードの組み方、よくある詰まりポイントの回避まで、2026年時点で実際に動く手順をまとめた。


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

結論から言うと「2ステップ必須」が最大のポイント

これ、意外と知られていないんですが——GmailからGoogleドライブへの「直接転送」はできません

よくある誤解として、「GmailノードとDriveノードをつなげば転送できる」と思っている人が多い。実際は以下の2ステップが必須。

  1. GmailノードでBinaryデータ(添付ファイルの実体)を取得する
  2. Google Drive NodeでそのBinaryデータをアップロードする

この仕組みを頭に入れておくと、ノードの設定でなぜそのパラメータを触るのかが一気に理解できる。順番に見ていく。


H2-1|事前準備:Google Cloud Consoleで2つのAPIを有効化する

n8n内だけで設定が完結すると思っていると、ここで必ず詰まる。Google側のAPIを有効化しないと、どれだけn8nで設定しても認証エラーが出るだけ。先にこちらを片付ける。

Google Cloud Projectの作成

Google Cloud Consoleを開いて、右上の「プロジェクトを選択」→「新しいプロジェクト」で任意の名前(例:n8n-automation)のプロジェクトを作る。既存プロジェクトに追加してもいいが、n8n専用を作ると後から管理しやすい。

Gmail APIとGoogle Drive APIの有効化

プロジェクトを作ったら「APIとサービス」→「ライブラリ」を開く。

  • 検索欄に「Gmail API」と入力→「有効にする」
  • 同様に「Google Drive API」→「有効にする」

両方とも有効化が必須。 Drive APIだけ有効にしてGmailが動かない、という事故がわりと多い。

OAuth同意画面の設定(2024年以降は必須手順)

「APIとサービス」→「OAuth同意画面」を開く。

  • ユーザーの種類:外部を選択
  • アプリ名・メールアドレスを入力して保存
  • スコープの追加:Gmail(読み取り専用)Google Drive(ファイル)を追加
  • テストユーザーに自分のGmailアドレスを追加する

2024年以降、Googleの審査が厳格化された。テストユーザー未登録のまま認証しようとすると「アクセス拒否」が出る。個人利用なら「テスト」モードのままで問題ない。

クライアントIDとシークレットの発行

「認証情報」→「認証情報を作成」→「OAuthクライアントID」を選択。

  • アプリケーションの種類:Webアプリケーション
  • 承認済みのリダイレクトURI:https://あなたのn8nドメイン/rest/oauth2-credential/callback

発行されたクライアントIDクライアントシークレットをメモしておく。次のステップでn8nに登録する。

セルフホスト版n8nの環境構築がまだの場合は、先にRailwayやRenderを使ったセルフホスト手順を確認してから戻ってくるのをすすめる。


H2-2|Gmail Triggerノードの設定:添付ファイルありメールだけを拾う

n8nでGmail認証情報を登録する

n8nの管理画面を開き、「Credentials」→「Add Credential」→「Gmail OAuth2」を選択。

  • Client ID:先ほど発行したID
  • Client Secret:先ほど発行したシークレット

「Connect」ボタンを押すとGoogleの認証画面が開く。テストユーザーとして登録したアカウントでログインして認証を完了させる。

Gmail Triggerノードの追加

新しいワークフローを作り、「+」ボタン→「Gmail Trigger」を追加。v1系のUIでは「On new email」というトリガータイプになっている。

重要な設定項目:

パラメータ 設定値 備考
Credential 先ほど作ったGmail OAuth2  
Poll Times Every 5 Minutes デフォルト推奨
Filters > Label INBOX または独自ラベルで絞る
Filters > Read Status Unread 既読メールを二重処理しない
Download Attachments ON これがBinaryデータ取得の肝

「Download Attachments」のONを忘れない。 ここをOFFのままDriveノードに接続しても、添付ファイルのデータが渡らない。実際に試してみて最初に詰まったのがここだった。

ポーリング方式なのでリアルタイム処理ではない。5分間隔設定なら最大5分の遅延が出る。業務上リアルタイム性が求められる場合はWebhook方式を検討する必要があるが、ファイル保存用途なら5分で十分なケースがほとんど。

IFノードで「添付なしメール」を除外する

Gmail Triggerの次に「IF Node」を追加する。これを入れないと、添付ファイルのないメールが来たときにワークフローがエラー停止する。

条件設定:
Value 1: 
Operation: Larger Than
Value 2: 0
  • True(添付あり)→ Google Drive Nodeへ接続
  • False(添付なし)→ No Operationノードで正常終了させる

この分岐を入れておくと、件名フィルターに引っかかった添付なしメールが来ても静かに流れていくだけで、ワークフローが止まらない。

フィルター条件で無料枠を節約する

n8n Cloudの無料プランは月2,500実行まで。全受信メールに反応させると意外と早く枠が埋まる。

件名フィルター例:
Filters > Subject Contains: 請求書
Filters > Subject Contains: 契約書

ラベル単位で絞るのが一番シンプル。Gmailのフィルター機能で対象メールを特定ラベルに自動振り分けしておき、n8nではそのラベルだけを監視する設定にすると管理しやすい。


H2-3|Google Driveノードの設定:BinaryデータをDriveへアップロードする

Google Drive認証情報の登録

Gmailと同じ手順でDriveの認証情報を登録する。「Credentials」→「Add Credential」→「Google Drive OAuth2」を選択。Gmail用と同じOAuthクライアントIDとシークレットを使いまわせる。

Google Drive Nodeの追加と設定

IFノードのTrue側に「Google Drive」ノードを追加。v1系(Drive API v3対応)のUI設定は以下の通り。

パラメータ 設定値
Credential Google Drive OAuth2
Resource File
Operation Upload
Input Data Field Name data
File Name ``
Parents (Folder ID) 保存先フォルダのID

フォルダIDの確認方法: GoogleドライブでフォルダをブラウザのURLで開くと、末尾に/folders/XXXXXという文字列がある。このXXXXX部分がフォルダID。

ファイル名を動的生成して後から探しやすくする

デフォルトのファイル名だと「invoice.pdf」が何十個も並んで誰から来たのか分からなくなる。送信者と日付を付与する。

File Name の設定値:
__

例:田中太郎_20260603_invoice.pdf

$json.fromはフルの送信者文字列(田中太郎 <[REDACTED]>)が入るため、split('<')[0].trim()で名前部分だけ取り出している。

月別フォルダに自動振り分けする

毎月フォルダを手動で作って整理するのは地味に面倒。n8nのexpression機能で自動化できる。

Googleドライブであらかじめ2026-06のような月別フォルダを作っておく方法もあるが、毎月手動作業が発生する。代わりに以下の方法を使う。

Driveノードの前に「Function Node」を追加して月別フォルダIDを動的に解決するか、保存先フォルダを固定の親フォルダにしてDriveの「フォルダ作成」ノードを組み合わせる方法が現実的。

よりシンプルな運用であれば、保存先フォルダを1つに固定しておき、ファイル名の先頭に年月を付与するだけでも十分に管理できる。

File Name の設定値(年月プレフィックス版):
__

例:2026-06_田中太郎_invoice.pdf

H2-4|よくある失敗と対処法

❌ 失敗1:「認証は通ったのにファイルがDriveに現れない」

原因の9割はDriveノードの「Input Data Field Name」設定ミス。

GmailノードでDownload Attachmentsをオンにすると、Binaryデータはdataというフィールド名で渡される(v1系)。DriveノードのInput Data Field Nameにdataと入力しないと、「送るべきファイルがない」と判断されてエラーになる。

確認箇所:
Google Drive Node > Input Data Field Name
→ 「data」と入力されているか確認

❌ 失敗2:「2通目以降が処理されない」

Gmail Triggerは「既読にしたメールは次回以降スキップする」という仕様がある。テスト中に何度も同じメールで試すと、2回目から反応しなくなる。

対処法はテストメールを「未読に戻す」か、件名を毎回変えて送り直す。本番運用では問題にならないが、テスト中はここで時間を取られやすい。

❌ 失敗3:「OAuthトークンが切れてワークフローが止まる」

GoogleのOAuthトークンには有効期限がある。特にn8n Cloudではなくセルフホスト版を使っている場合、長期間放置するとリフレッシュトークンが失効して認証エラーが出る。

対策:Error Triggerノードを追加してSlackやLINEに通知する。

ワークフロー設定 > Error Workflow に
「Error Trigger → Slack(またはLINE Notify)」
のワークフローを指定しておく

これだけで、深夜に認証が切れても翌朝すぐ気づける。実運用に入ったら必須の設定。

❌ 失敗4:「25MB超えの添付ファイルが処理されない」

Gmailの添付ファイル上限は25MB。これを超えるファイルはGmailが自動的に「Googleドライブのリンク」に変換する仕様がある。この場合、GmailノードのBinaryデータには添付ファイルの実体が入らない。

25MB超えのファイルを扱う業務が多い場合は、そもそも別の経路(Google Drive直接アップロード、Dropbox連携など)を検討した方がいい。


H2-5|n8n Cloud vs セルフホスト:どちらを選ぶべきか

正直なデメリットも含めて比較する。

項目 n8n Cloud(無料プラン) セルフホスト(Railway等)
月間実行数 2,500回まで無料 実質無制限
初期設定の難易度 低い(すぐ使える) 中〜高(サーバー設定要)
維持費 無料(有料プランは月20ドル〜) Railway:約500円〜/月
SSL・外部公開 自動対応済み 自分で設定が必要
OAuthリダイレクトURI 固定URLで設定簡単 自ドメインのURL設定が必要
データのプライバシー n8nサーバーにデータが通る 自分のサーバー内で完結

月2,500実行という数字を具体的に計算すると——5分ポーリングで全受信メールを監視した場合、1日288回の実行になる。1ヶ月で約8,640回になるので、無料プランは約9日で枯渇する計算だ。

現実的な対策は2つ。

  1. ポーリング間隔を15〜30分に延ばす(1日96〜48回 → 月3,000〜1,500回に抑制)
  2. フィルター条件を厳しくして実際に処理するメールを絞る

添付ファイル保存の用途なら「特定ラベルのみ監視」にすることで、大半のケースは無料枠内に収まる。


H2-6|ワークフロー全体像と最終確認チェックリスト

完成したワークフローの構成

[Gmail Trigger]
  ↓ (全受信メールを5分間隔でポーリング)
[IF Node: attachments.length > 0]
  ↓ True              ↓ False
[Google Drive Node]  [No Operation]
  (Binaryデータをアップロード)

シンプルに見えるが、この3ノード構成で「添付ファイルありのメールだけをDriveに保存する」という自動化が完成する。

本番稼働前チェックリスト

  • Google Cloud ConsoleでGmail API・Drive API両方が有効になっている
  • OAuth同意画面にテストユーザーのメールアドレスが登録されている
  • Gmail TriggerノードでDownload AttachmentsがONになっている
  • IFノードでattachments.length > 0の分岐が設定されている
  • Drive NodeのInput Data Field Nameにdataが入力されている
  • 保存先フォルダIDが正しく設定されている
  • Error TriggerとSlack/LINE通知が接続されている
  • ワークフローが「Active」になっている(Activeにしないと動かない)

最後の「Activeにする」を忘れるのは初歩的なミスに見えるが、実際には気づくまでに「なぜ動かない?」と30分悩むことがある。確認する。


よくある質問

Q1. 複数の添付ファイルがある場合、全部保存できますか?

できる。ただし上記の設定は$json.attachments[0](最初の添付ファイルのみ)を対象にしている。複数ファイルを全て保存するには、Google Drive Nodeの前に「Loop Over Items(旧:Split in Batches)」ノードを追加して、attachmentsの配列をループ処理する必要がある。

[Gmail Trigger]
  ↓
[IF Node: attachments.length > 0]
  ↓ True
[Loop Over Items: 配列フィールド = attachments]
  ↓
[Google Drive Node: ループ内で1ファイルずつアップロード]

Loop Over Itemsノードの「Field to Split On」にattachmentsを設定するだけで、3つの添付ファイルがあれば3回ループして全部保存してくれる。

Q2. PDFだけ保存してExcelは除外することはできますか?

できる。IFノードの条件を追加するか、新たにIFノードを挟む。

条件設定例:
Value 1: 
Operation: Contains
Value 2: pdf

mimeTypeapplication/pdfを含む場合のみDriveへ保存、それ以外はスキップする形で分岐させる。

Q3. 特定の送信者からのメールだけ処理したい場合は?

2つのアプローチがある。

方法A:Gmail側でラベルを付ける Gmailのフィルター設定で特定送信者のメールに専用ラベルを付け、n8nのGmail TriggerではそのラベルIDを指定する。Gmail側で管理できるので後から条件変更が楽。

方法B:n8nのIFノードで絞る

Value 1: 
Operation: Contains
Value 2: @example.com

IFノードで送信者アドレスに特定ドメインを含む場合のみ処理する。n8n内で完結するのでシンプル。


まとめ:今日やるべき1つのアクション

この記事で設定のポイントをまとめると以下になる。

  • Google Cloud ConsoleでGmail APIとDrive APIの両方を有効化する
  • GmailノードでBinaryデータを取得するにはDownload Attachments: ONが必須
  • DriveノードへのBinaryデータ渡しにはInput Data Field Name: dataを設定する
  • IFノードで添付なしメールを除外してエラー停止を防ぐ
  • Error Triggerで認証切れを即通知できる体制を作る

今日やるべきアクションは1つ。Google Cloud ConsoleでGmail APIを有効化して、OAuthクライアントIDを発行すること。

ここさえ終わらせれば、n8n側の設定は正直30分もあれば完成する。API発行で詰まっている人が一番多いので、そこから着手するのが最短ルート。

次のステップとして、保存したファイルをGPT-4oで要約してSlackに通知する拡張ワークフローも組める。Gmail→Drive→AIサマリー→Slack通知の4ノード構成で、請求書や契約書の内容を受信と同時に把握できるようになる。


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

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

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

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

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

👉 今すぐ購入する

n8nノーコード自動化 実践ワークフロー集(¥1,980)

Gmail/Slack/Notion/Claude連携の動くワークフロー10本を実装込みで完全解説(全35ページ)

  • Cloud版前提・2026年最新のn8n v1系UI完全対応
  • 動くノード設定値・JSON・OAuth設定まで全部入り
  • 10ワークフロー(Gmail/Slack/Notion/Discord/Webhook/RSS)はコピペで即実務投入

👉 今すぐ購入する


関連記事


関連ツール紹介

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

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