はじめに
皆さん、こんにちは!以前の記事「【n8n】Gmailの添付ファイルをGoogleドライブへ全自動保存!設定方法を徹底解説」では、n8nを使ってGmailの添付ファイルをGoogleドライブに自動保存する方法をご紹介しました。多くの方にご覧いただき、業務効率化のお役に立てているようで大変嬉しく思います。
さて今回は、そのワークフローをさらにパワーアップさせる拡張版をお届けします!具体的には、OpenAIのAIモデルを組み込むことで、受信したメールが「請求書に関連するメール」かどうかをAIが自動で判別し、請求書と思われるメールの添付ファイルのみをGoogleドライブに保存する、より賢い自動化の仕組みを構築します。
「重要な請求書だけを特定のフォルダに集めたい」「宣伝メールの添付ファイルまで保存したくない」といった、より高度なニーズに応える内容となっています。さっそく見ていきましょう!

このワークフローでできること(AI拡張版)
- Gmailの特定条件(例:未読メール)に合致したメールを自動でチェックします。
- メールの件名や本文をAI(OpenAIモデル)が解析し、そのメールが「請求書」に関連するものかどうかを判断します。
- 「請求書メール」と判断された場合のみ、メールに添付されているファイルを取得します。
- 取得した添付ファイルを、Google Driveのあらかじめ指定したフォルダに自動でアップロード・保存します。
- 複数の添付ファイルがある場合でも、それぞれ個別のファイルとして保存します。
- 元のファイル名を維持したままGoogle Driveに保存できます。
- 一度設定すれば、請求書関連の添付ファイル保存作業をインテリジェントに自動化できます。
事前準備(AI拡張版)
設定を始める前に、以下のものを準備してください。
- n8nアカウント(クラウド版推奨)
- Gmailアカウント
- Google Driveアカウント
- Google Drive APIの準備(Google Cloud Consoleでの設定)。用意したAPIを記述します。
- OpenAI APIキー
- 今回のAI機能を利用するために、OpenAIのAPIキーが必要になります。
- お持ちでない方は、OpenAI公式サイトからアカウント登録し、APIキーを取得してください。
ワークフローの作り方:ステップ・バイ・ステップ解説(AI拡張版)
それでは、AI請求書判別機能付きのワークフローを作成していきましょう!
ステップ1: Gmail Triggerノードの追加と設定
これは前回と同様です。新しいメールを検知します。
- 「+」ボタンから「Gmail Trigger」ノードを追加。
- Credentials for Gmail OAuth2: Gmailアカウントで認証。
- Poll Times: 「everyMinute」(毎分)など、チェック頻度を設定。
- Filters > Read Status: 「Unread emails only」(未読)を選択。
- Options > Download Attachments:
true
にチェック。

ステップ2: Gmailノード(メール取得)の追加と設定
これも前回と同様、トリガーが検知したメールの詳細情報を取得します。
- 「Gmail Trigger」ノードから「Gmail」ノードを追加。
- Credentials for Gmail OAuth2: 設定済みの認証情報を選択。
- Operation: 「Get」を選択。
- Message ID:
={{ $json.id }}
と入力。 - Options > Download Attachments:
true
にチェック。

ステップ3: OpenAI Chat Modelノードの追加と設定
ここからが今回の拡張ポイントです。AIモデルを指定します。
- ワークスペースの空いている場所で「+」ボタンを押し、「OpenAI Chat Model」ノード (n8n-nodes-langchain.lmChatOpenAi) を検索して追加します。
- Credentials for OpenAiApi: 「Create New」をクリックし、事前に用意したOpenAIのAPIキーを登録して認証します。
- Model: 使用するAIモデルを選択します。JSONデータでは「gpt-4o-mini」が指定されていますが、ご自身の環境や目的に合わせて「gpt-3.5-turbo」なども選択可能です。

ステップ4: メッセージエージェントノードの追加と設定
AIにメール内容を渡し、請求書かどうかを判断させる指示を出します。
- 「Gmail取得」ノードの右側の「+」から、「Agent」ノード (n8n-nodes-langchain.agent) を検索して追加し、「メッセージエージェント」と名前を付けます。(JSONデータでは「メッセージエージェント」)
- Prompt Type: 「Define below」を選択。
- Text: AIに渡すメール情報を指定します。
件名: {{ $json.subject }} 内容: {{ $json.text }}
これは、「Gmail取得」ノードから受け取ったメールの件名(subject)と本文(text)をAIに渡すという意味です。 - Options > System Message: AIへの指示(プロンプト)を具体的に記述します。
このメールが請求書メールであるかどうかを調べていただけますか? もし請求書メールであると思われる場合は「YES」を、そうでない場合は「NO」を返してください。「YES」または「NO」のみを返してください。
AIに「YES」か「NO」で回答させることで、後の処理をしやすくします。 - 接続: 「OpenAI Chat Model」ノードの出力を「メッセージエージェント」ノードの左上にある「AI Language Model」入力ポートに接続します。

ステップ5: 条件分岐 (Switch) ノードの追加と設定
AIの回答(「YES」か「NO」)に基づいて、処理を分岐させます。
- 「メッセージエージェント」ノードの右側の「+」から、「Switch」ノードを追加し、「条件分岐」と名前を付けます。
- Rules:
- Rule 1 (請求書メールの場合):
- Add Condition:
- Left Value:
={{ $json.output }}
(メッセージエージェントからのAIの回答を参照) - Operator: String > is equal to
- Right Value:
YES
- Left Value:
- Output Key:
YES
(この条件に一致した場合の出力ブランチ名)
- Add Condition:
- Rule 2 (請求書メールでない場合):
- Add Condition:
- Left Value:
={{ $json.output }}
- Operator: String > is equal to
- Right Value:
NO
- Left Value:
- Output Key:
NO
(この条件に一致した場合の出力ブランチ名)
- Add Condition:
- Rule 1 (請求書メールの場合):

ステップ6: 添付・メッセージを設置 (Set) ノードの追加と設定
AIが「YES」(請求書メール)と判断した場合に、添付ファイル情報とメッセージIDを整理します。このノードは「条件分岐」ノードの「YES」ブランチ(通常は一番上の出力)に接続します。
- 「条件分岐」ノードの「YES」ブランチから「Set」ノードを追加し、「添付・メッセージを設置」と名前を付けます。
- Assignments:
- Add Assignment:
- Name:
attachments
- Value:
={{ $('Gmail取得').item.binary.keys() }}
注:$('Gmail取得')
はご自身の「Gmail取得」ノードの名前に合わせてください。
- Name:
- Add Assignment:
- Name:
message_id
- Value:
={{ $('Gmail取得').item.json.id }}
注: ここではメールIDを.json.id
から取得しています。
- Name:
- Add Assignment:

ステップ7: データを分割 (SplitOut) ノードの追加と設定
複数の添付ファイルがある場合に備えて、データを分割します。「添付・メッセージを設置」ノードに接続します。
- 「添付・メッセージを設置」ノードから「SplitOut」ノードを追加し、「データを分割」と名前を付けます。
- Field To Split Out:
attachments
と入力。 - Include: 「All Other Fields」を選択。

ステップ8: 結合 (Merge) ノードの追加と設定
分割した添付ファイル情報と、元のメール情報を再度紐付けます。
- 「データを分割」ノードから「Merge」ノードを追加し、「結合」と名前を付けます。
- Mode: 「Combine」を選択。
- Advanced:
true
にチェック。 - Merge By Fields > Values:
- Field 1:
message_id
(Input 1: 「データを分割」ノードから) - Field 2:
id
(Input 2: ステップ2の「Gmail取得」ノードから)
- Field 1:
- 接続の調整:
- 「データを分割」ノードの出力を「結合」ノードの Input 1 に接続します。
- ステップ2の「Gmail取得」ノードの出力を「結合」ノードの Input 2 に接続します。

ステップ9: Google Driveアップロードノードの追加と設定
最後に、請求書と判断されたメールの添付ファイルをGoogle Driveにアップロードします。「結合」ノードに接続します。
- 「結合」ノードから「Google Drive」ノードを追加。
- Credentials for Google Drive OAuth2: Google Driveアカウントで認証。
- Input Data Field Name:
={{ $json.attachments }}
と入力。 - Name:
={{ $binary.data.fileName }}
と入力。 - Folder ID:
- Value: ここに、Google Driveの請求書保存用フォルダのIDを指定のフォルダーIDを記述します。

ワークフローの接続を確認(AI拡張版)
全てのノードが正しく接続されているか確認しましょう。JSONデータに基づくと、主要な接続は以下のようになります。
Gmail Trigger
→Gmail取得
Gmail取得
→メッセージエージェント
(Input 1 for Agent)Gmail取得
→結合
(Input 2 for Merge)OpenAI Chat Model
→メッセージエージェント
(AI Language Model input for Agent)メッセージエージェント
→条件分岐
条件分岐
(YESブランチ) →添付・メッセージを設置
条件分岐
(NOブランチ) → (接続なし、または別の処理へ)添付・メッセージを設置
→データを分割
データを分割
→結合
(Input 1 for Merge)結合
→Google Driveアップロード
ワークフローのアクティブ化とテスト
全ての設定が完了したら、ワークフロー右上の「Active」トグルをオンにして有効化します。
その後、実際に請求書と思われる内容の添付ファイル付きメールと、そうでないメールを送信し、AIが正しく判別してGoogle Driveの指定フォルダにファイルが保存されるか(または保存されないか)をテストしてみましょう。
まとめ
今回は、n8nとAIを連携させて、Gmailの添付ファイルの中から「請求書」に関連するものだけを賢く判別し、Google Driveに自動保存する拡張版のワークフローをご紹介しました。
この仕組みを使えば、
- 本当に必要な添付ファイルだけを整理して保存できる。
- 手作業での仕分けや確認の手間が大幅に削減される。
- よりスマートで高度な業務自動化が実現できる。
といったメリットがあります。
AIのプロンプトを調整したり、条件分岐のロジックを工夫したりすることで、さらに多様な応用が可能です。例えば、請求書の種類に応じて保存先フォルダを変える、特定の内容のメールが来たらSlackに通知するなど、アイデア次第で可能性は無限に広がります。
ぜひ、今回の記事を参考に、あなたの業務にAIを活用した自動化を取り入れてみてくださいね!
AIエージェント導入を検討中の方!
まずは無料でご相談ください!
・業務改善でAIを使用したい
・AIで業務効率を上げたい
・どのAIを導入すればいいかわからない
・技術的サポートが必要な方