はじめに
皆さん、こんにちは!前回、前々回の記事では、n8nを使ってGmailの添付ファイルをGoogleドライブに自動保存する方法、そしてAIを活用して請求書メールを判別する方法をご紹介しました。
これらの自動化だけでも十分に強力ですが、今回はその集大成とも言える超発展編をお届けします!
今回のワークフローでは、AIが請求書メールを判別し、添付ファイルをGoogleドライブに保存するだけでなく、なんと添付された請求書(PDFなど)の内容をAIが読み取り、会社名、請求金額、請求日といった重要な情報を抽出して、Googleスプレッドシートに自動で記録します。これにより、請求書データの入力作業からも解放されます!

このワークフローでできること(AIデータ化・記録拡張版)
- Gmailの未読メールを自動チェックし、添付ファイルがあるメールを対象とします。
- メールの件名や本文をAIが解析し、そのメールが「請求書」に関連するものかどうかを判断します。
- 「請求書メール」と判断された場合、添付ファイル(PDFなど)をGoogle Driveの指定フォルダに保存します。
- 保存された添付ファイル(PDF)から、AIがテキスト情報を抽出します。
- 抽出されたテキスト情報(請求書の内容)を別のAIエージェントが解析し、会社名、請求日、請求金額などの項目をJSON形式で整理します。
- 整理された請求書情報を、Googleスプレッドシートの指定したシートに自動で追記します。
- これにより、請求書の受け取りからデータ入力までの一連のプロセスをほぼ完全に自動化できます。
Gmailからの添付ファイル取得、AIによる請求書メール判別、Googleドライブへの保存までの基本的な流れは前回の記事で詳しく解説しています。今回は、そこからさらに発展し、Googleドライブに保存された添付ファイルから情報を抽出し、スプレッドシートに記録する部分を中心に説明します。
事前準備(AIデータ化・記録拡張版)
これまでの準備に加えて、以下のものが必要になります。
- n8nアカウント(またはセルフホスト環境)
- Gmailアカウント
- Google DriveアカウントとAPI準備
- OpenAI APIキー (OpenAI公式サイト)
- 用意したAPIを記述します。
- Google Sheets APIの有効化と認証情報
- Googleスプレッドシートにデータを書き込むために、Google Cloud ConsoleでGoogle Sheets APIを有効にし、適切な認証情報(通常はOAuth 2.0)を用意したAPIを記述しておきましょう。
- 記録先となるGoogleスプレッドシートを事前に作成しておいてください。
スプレッドシートには以下のような見出しを作成します。

ワークフローの作り方:ステップ・バイ・ステップ解説(請求書データ取得からスプレッドシート記録まで)
Gmailの添付ファイル付きメールをトリガーとし、AIが請求書メールと判断した後、添付ファイルをGoogleドライブにアップロードするまでの手順は、こちらの記事の手順(ステップ1からステップ5)を参照してください。ここでは、Googleドライブへのアップロードと並行して行われる、添付ファイルからのデータ抽出とスプレッドシートへの記録部分について詳しく解説します。(※以下の画像の赤枠部分)

ステップ1: 請求書データ取得 (Extract from File) ノードの追加と設定
Googleドライブに保存するのと同じ添付ファイル(PDFを想定)からテキスト情報を抽出します。
- 「結合」ノード(前回の記事のステップ5で作成したもの)から分岐させ、「Extract from File」ノードを追加し、「請求書データ取得」と名前を付けます。
- Operation: 「PDF」を選択します(請求書がPDFの場合)。他の形式の場合は適切なものを選択してください。
- Binary Property Name:
={{ $('結合').item.binary.keys() }}
と入力します。
これは、「結合」ノードが持つ添付ファイルのバイナリデータ(ファイル名がキーになっている)を指定しています。通常、添付ファイルは一つずつ処理されるため、この式で対象のファイルデータを指定できます。

ステップ2: OpenAI Chat Modelノードの追加と設定(請求書解析用)
請求書の内容を解析するためのAIモデルを指定します。これはメール内容を判別するAIモデルとは別に設定します。
- ワークスペースの空いている場所で「+」ボタンを押し、「OpenAI Chat Model」ノードを追加します。(JSONデータでは「OpenAI Chat Model」という名前ですが、区別のため「請求書解析用OpenAIモデル」などと名付けても良いでしょう)
- Credentials for OpenAiApi: 事前に用意したOpenAIのAPIキーの認証情報を選択します。
- Model: 「gpt-4o-mini」など、請求書解析に適したモデルを選択します。

ステップ3: 請求書AIエージェントノードの追加と設定
抽出したテキストデータを基に、AIに請求書の詳細情報をJSON形式で出力させます。
- 「請求書データ取得」ノードの右側の「+」から、「Agent」ノードを追加し、「請求書AIエージェント」と名前を付けます。
- Prompt Type: 「Define」を選択。
- Text:
={{ $json.text }}
と入力します。
これは、前の「請求書データ取得」ノードがPDFから抽出したテキスト全体をAIに渡すという意味です。 - Has Output Parser:
true
にチェックを入れます。(JSON形式で出力させるため) - Options > System Message: AIへの詳細な指示(プロンプト)を記述します。JSONデータを参考に、以下のような指示を与えます。
あなたは財務アドバイザーとして、入力データから請求書の特定の要素を読み取り、JSON形式で情報を提供します。以下の指定されたキーのみを使用してください。
例えば、
{
"会社名": "株式会社Digicra",
"代表者名": "山田 太郎",
"インボイス番号": "TXXXXXXXXX",
"請求書番号": "871XXX4",
"請求日": "2025-05-25",
"請求内容": "デスクトップPC用CPU",
"入金日": "2025-05-25",
"小計": "200,000円",
"消費税": "20,000円",
"請求金額": "220,000円"
}
以下の企業の名前は出力しないでください。 株式会社XXXXX
このプロンプトは非常に重要です。AIにどのような情報を、どのような形式(キー名)で抽出してほしいかを正確に伝えます。「例えば」の形式や「出力しないでください」のような指示もAIの精度向上に役立ちます。通貨の「円」を含めるかどうかもここで指定できます。 - 接続: ステップ2で作成した「OpenAI Chat Model(請求書解析用)」ノードの出力を、この「請求書AIエージェント」ノードの左上にある「AI Language Model」入力ポートに接続します。

ステップ4: Codeノードの追加と設定
AIが出力したJSON形式の文字列を、n8nで扱いやすいオブジェクト形式に変換します。
- 「請求書AIエージェント」ノードの右側の「+」から、「Code」ノードを追加します。
- JavaScript Code: 以下のコードを入力します。
// AIエージェントからの出力を取得
let invoice_details = $('請求書AIエージェント').item.json.output;
// JSON文字列をJavaScriptオブジェクトに変換して返す
return JSON.parse(invoice_details);
A I の出力がネストされている場合(例 : < c o d e > ( ′ 請求書AIエージェント ′ )の部分は、ご自身の「請求書AIエージェント」ノードの名前に合わせてください。AIの出力がネストされている場合(例:json.output.first().json.output
)、適宜パスを調整してください。

ステップ5: Google Sheets入力ノードの追加と設定
Codeノードで整形された請求書情報をGoogleスプレッドシートに書き込みます。
- 「Code」ノードの右側の「+」から、「Google Sheets」ノードを追加し、「Google Sheets入力」などと名前を付けます。
- Credentials for Google Sheets OAuth2: 「Create New」をクリックし、Google Sheets API用の認証情報を設定・選択します。
- Operation: 「Append」を選択します。(既存のシートに新しい行として追記)
- Document ID:
- Value: 記録先となるGoogleスプレッドシートのIDを指定のフォルダーIDを記述します。
- スプレッドシートIDの確認方法: スプレッドシートを開き、ブラウザのアドレスバーのURL(例:
https://docs.google.com/spreadsheets/d/ココがID/edit
)からID部分をコピーします。
- Sheet Name:
- Value: 記録先のシート名を指定します(例:
シート1
)。または、シートのgid(例:gid=0
)を指定します。
- Value: 記録先のシート名を指定します(例:
- Columns > Mapping Mode: 「Auto-Map Input Data」を選択すると、Codeノードからの出力(JSONのキー)を自動的にスプレッドシートのカラム名にマッピングしようとします。
または、「Define Below」を選択し、Schema でスプレッドシートのカラム名と、Codeノードからのどのデータを割り当てるかを明示的に設定することも可能です。JSONデータではスキーマが定義されており、AIの出力キー(会社名、請求金額など)と一致させています。こちらの方が確実です。
Schemaの設定例(JSONデータ参考):- ID: 会社名, Display Name: 会社名, Type: string
- ID: 代表者名, Display Name: 代表者名, Type: string
- …
- ID: 請求金額, Display Name: 請求金額, Type: string (またはnumber)
スプレッドシートには以下のような見出しを作成します。


ワークフローの接続を確認(AIデータ化・記録拡張版)
全体の接続が複雑になるため、よく確認しましょう。特に、「結合」ノードからGoogle Driveへのアップロードと、請求書データ取得への分岐がポイントです。
- (…前回のワークフローの接続…)
結合
→Google Driveアップロード
(並行処理1)結合
→請求書データ取得
(並行処理2)請求書データ取得
→請求書AIエージェント
OpenAI Chat Model(請求書解析用)
→請求書AIエージェント
(AI Language Model input)請求書AIエージェント
→Code
Code
→Google Sheets入力
ワークフローのアクティブ化とテスト
全ての設定が完了したら、ワークフローをアクティブ化します。実際に請求書PDFが添付されたメールを送信し、以下の点を確認しましょう。
- Google Driveの指定フォルダに添付ファイルが保存されるか。
- Googleスプレッドシートの指定したシートに、請求書の情報(会社名、金額など)が正しく記録されるか。
- AIが情報を誤って抽出していないか(プロンプトの調整が必要な場合があります)。
まとめ
今回は、AIを活用してGmailに届いた請求書メールを判別し、添付ファイルをGoogleドライブに保存、さらに請求書の内容を読み取ってGoogleスプレッドシートに自動記録する、非常に高度な仕組みをご紹介しました。
このワークフローを導入することで、
- 請求書の受け取りから仕分け、保存、データ入力までの一連の作業をほぼ完全に自動化できる。
- 人的ミスを大幅に削減し、データの正確性を向上できる。
- 経理担当者の負担を劇的に軽減し、より戦略的な業務に時間を割けるようになる。
といった、計り知れないメリットが期待できます。
AIのプロンプトエンジニアリング(AIへの指示の出し方)や、エラーハンドリング(予期せぬエラーへの対応)など、さらに改善できる点はありますが、今回の内容はRPAや業務自動化の最前線と言えるでしょう。
ぜひ、この記事を参考に、あなたのビジネスプロセスを革新してみてください!
AIエージェント導入を検討中の方!
まずは無料でご相談ください!
・業務改善でAIを使用したい
・AIで業務効率を上げたい
・どのAIを導入すればいいかわからない
・技術的サポートが必要な方