はじめに
皆さん、こんにちは!毎月の経費精算、レシートを見ながら一つ一つ手入力するのって、時間もかかるし面倒ですよね。「この作業、誰か代わりにやってくれないかな…」そう思ったことはありませんか?
実は、そんな願いを叶える方法があるんです!
今回は、Google Driveに領収書の写真をアップロードするだけで、AIが内容を自動で読み取り、Googleスプレッドシートにまとめてくれる、そんな魔法のような「レシート処理ワークフロー」を、ノーコード自動化ツール「n8n(エヌエイトエヌ)」を使って作る方法をステップバイステップでご紹介します。

このワークフローでできること
このn8nワークフローを導入すると、以下のような経費精算の自動化が実現できます。
- レシート画像の自動取り込み: Google Driveの指定フォルダにレシート画像をアップロードするだけで処理が開始されます。
- AIによる情報抽出: アップロードされたレシートから、日付、合計金額、会社名、勘定科目、消費税、登録番号(インボイス番号)といった主要な情報をAIが自動で読み取ります。
- スプレッドシートへの自動記録: 抽出された情報が、指定したGoogleスプレッドシートに自動的に新しい行として追加されます。
- 元画像へのリンク保存: スプレッドシートには、確認用に元のレシート画像へのリンクも一緒に記録されるため、後からの確認も簡単です。
これにより、あなたは…
- 面倒な手入力作業から解放されます!
- 入力ミスや記入漏れのリスクを大幅に減らせます!
- いつでも最新の経費データをスプレッドシートで確認できます!
- 経費精算にかかっていた時間を大幅に削減し、より重要な業務に集中できます!
事前準備
このワークフローを作成・実行するために、事前に以下のものをご準備ください。
- n8nアカウント:
- Googleアカウント:
- Google DriveとGoogleスプレッドシートを使用します。
- OpenAI APIキー:
- レシートの画像解析にOpenAIのAIモデル(今回はGPT-4o-mini)を使用します。APIキーが必要です。
- OpenAIプラットフォーム: https://platform.openai.com/ (APIキーの取得方法については、OpenAIのドキュメントをご確認ください)
準備ができたら、さっそくワークフローを作っていきましょう!

ワークフロー作り方:ステップ・バイ・ステップ解説
n8nの編集画面を開き、以下のノードを順番に配置・設定していきます。

ステップ1: Google Driveトリガー – レシートのアップロードを検知
まず、Google Driveの特定フォルダに新しいファイルがアップロードされたことを検知するトリガーを設定します。
- ノード追加:
Google Drive Trigger
ノードを追加します。 - 認証設定: お手持ちのGoogleアカウントでn8nを認証します。
- イベント設定:
Poll Times
>Mode Type
:Every Minute
を選択します。Trigger On
:Changes Involving a Specific Folder
を選択します。Folder
: レシート画像をアップロードするGoogle Drive内のご自身で用意した指定のフォルダーIDを記述します。Watch For
:File Updated
(ファイルが作成または更新された時) を選択します。Options
>File Type
:all
または必要に応じて画像ファイル形式 (Image) を選択します。

これで、指定したフォルダにレシートがアップロードされると、ワークフローが自動的にスタートします。
ステップ2: Google Drive – 画像ファイルのダウンロード
トリガーが検知したファイルをn8n内で扱えるようにダウンロードします。
- ノード追加:
Google Drive
ノードを追加します。 - 認証設定: ステップ1と同じGoogleアカウントで認証します。
- 設定:
Resource
:File
を選択します。Operation
:Download
を選択します。File ID
: 前のノード(Google Drive Trigger)から渡されるファイルIDを指定します。Expressionエディタを開き、{{ $json.id }}
のように入力します。

ステップ3: OpenAI – AIによる画像解析(レシート情報抽出)
ここが今回のキモ!ダウンロードしたレシート画像をOpenAIのAIモデルに渡し、必要な情報を抽出してもらいます。
- ノード追加:
@n8n/n8n-nodes-langchain.openAi
ノード(または類似のOpenAI画像解析ノード)を追加します。 - 認証設定: ご自身で用意したOpenAI APIキーを記述して認証します。
- 設定:
Resource
:Image
を選択します。Operation
:Analyze Image
を選択します。Model
:gpt-4o-mini
(または利用可能な他のモデル)を選択します。Text Input
(プロンプト): AIにどのような情報を抽出してほしいか、具体的な指示を出します。以下のような内容を記述します。あなたは経費精算の専門アシスタントです。 提供されたレシートまたは領収書の画像/PDFから、以下の情報を日本語で抽出してください。 **日付**: YYYY/MM/DD形式。年が不明な場合は現在の年。 **合計金額**: 数値のみ。 **勘定科目**: 食費、交通費など適切なものを提案。 **会社名**: 会社名を抽出。 **登録番号**: Tから始まるインボイス番号。 **消費税**: 合計金額にかかる消費税。 出力はJSON形式で、以下のキーを使用してください。 { "日付": "抽出した日付", "勘定科目": "提案された勘定科目", "会社名": "抽出した会社名", "登録番号": "抽出したインボイス番号", "合計金額": "抽出した合計金額", "消費税": "抽出した消費税" } 情報が読み取れない項目や判断が難しい項目があった場合は、その値に「不明」と記述してください。
Input Type
:Binary File(s)
(前のGoogle Driveノードからバイナリデータが渡されるので、それを受け取れる形式)Input Data Field Name
: 前のノード(Google Drive Download)から渡されるdata
(ファイルコンテンツ)を指定します。Expressionエディタで{{ $('画像取得').item.binary.data.data }}
のように指定します。(ノード名を「画像取得」としている場合)Simplefy OutPut
:「true
」を選択します。

ステップ4: OpenAI Chat Model (Langchain Agent用)
Langchain Agentノードが使用する言語モデルを指定します。
- ノード追加:
@n8n/n8n-nodes-langchain.lmChatOpenAi
ノードを追加。 - 認証設定: ステップ3と同じOpenAI APIキーで認証します。
- 設定:
Model
:gpt-4o-mini
を選択。

ステップ5: 領収書エージェント (Langchain Agent) – JSON整形
OpenAIからの出力には不要な改行が含まれることがあるため、これを整形します。
- ノード追加:
@n8n/n8n-nodes-langchain.agent
ノードを追加。 - LLM接続: 「OpenAI Chat Model」ノードをこのノードの
Language Model
入力に接続します。 - 設定:
Prompt Type
:Define below
Prompt (User Message)
: 前の「画像解析」ノードの出力を指定します。例:{{ $json.content }}
または{{ $('画像解析').first().json.content }}
(ノード名を「画像解析」としている場合)Require Specific Output Format
: チェックを入れます。Options
>System Message
:提供されたJSON形式のデータより、不要な改行を削除してJSON形式で出力してください。

ステップ6: データ整理 (Codeノード) – JSONパース
エージェントから出力された整形済みJSON文字列を、扱いやすいJSONオブジェクトに変換します。
- ノード追加:
Code
ノードを追加します。 - JS Code: 以下のJavaScriptコードを記述します。
注意:
// 前の「領収書エージェント」ノードの出力を取得
// ノード名は実際のワークフローに合わせてください。
let invoice_details_str = $('領収書エージェント').first().json.output;
return JSON.parse(invoice_details)$('領収書エージェント')
の部分は、実際の「領収書エージェント」ノードの名前に合わせてください。

ステップ7: リンクURL取得 (Setノード) – 元画像へのリンク作成
スプレッドシートに記録する際、元のレシート画像へのリンクも保存しておくと便利です。
- ノード追加:
Set
ノードを追加します。 - 設定:
Mode
:JSON
を選択。JSON
: 以下のJSONを記述します。webViewLink
はステップ2の「画像取得」(Google Drive Download)ノードの出力から取得します。{ "リンクURL": "{{ $('画像取得').first().json.webViewLink }}" }
注意:$('画像取得')
の部分は、実際の「画像取得」(Google Drive Download)ノードの名前に合わせてください。このノードはJSON内で「画像取得」という名前で参照されていますが、実際のワークフローでは「Google Drive」(Download操作)ノードに対応します。

ステップ8: 結合 (Mergeノード) – 全データをひとつに
ステップ6でパースしたレシート情報と、ステップ7で取得した画像リンクを一つのデータにまとめます。
- ノード追加:
Merge
ノードを追加します。 - 設定:
Mode
:Combine
を選択。Combine By
:Position
を選択。Number of Inputs
:2
を選択。- 入力接続:
- Input 1: 「データ整理 (Code)」ノードの出力を接続します。
- Input 2: 「リンクURL取得 (Set)」ノードの出力を接続します。

ステップ9: Google Sheets入力 – スプレッドシートへ記録
最後に、まとめられたデータをGoogleスプレッドシートに追記します。
- ノード追加:
Google Sheets
ノードを追加します。 - 認証設定: ステップ1と同じGoogleアカウントで認証します。
- 設定:
Operation
:Append Row
(追記) を選択します。Document
: データを記録したいGoogleスプレッドシートのご自身で用意した指定のドキュメントIDを記述します。Sheet
: 記録したいシート名(例:シート1
やGID=0
など)をご自身で用意した指定のシート名を記述します。Mapping Column Mode
:Mapping Mode
:Map Automatically
を選択すると、前のノードからのデータキーが自動的に列名としてマッピングされます。- または、
Schema
で列名(日付, 勘定科目, 会社名, 合計金額, 消費税, 登録番号, リンクURL)を手動で設定し、各列に対応する値をExpressionで指定することも可能です。例えば、「日付」列には{{ $json.日付 }}
を指定します。

ワークフローのアクティブ化とテスト
全ての設定が完了したら、ワークフローをアクティブ化し、正常に動作するか確認しましょう。
- Google Driveの指定フォルダに、レシートの画像(JPEG, PNGなど)やPDFをアップロードします。
- しばらく待つと(n8nのポーリング間隔や処理時間によります)、ワークフローが自動実行されます。
- 指定したGoogleスプレッドシートを開くと、AIが読み取ったレシート情報(日付、勘定科目、会社名、合計金額、消費税、登録番号)と、元画像へのリンクが新しい行に追加されているはずです!
もし「不明」と記録される項目が多い場合は、OpenAIのプロンプトを調整したり、レシートの撮影品質を上げる(明るい場所で、まっすぐ、はっきりと)などの工夫を試してみてください。
まとめ
今回は、n8n、Google Drive、OpenAIを使って、レシート処理を自動化するワークフローの作り方をご紹介しました。
この仕組みを使えば、面倒な手入力から解放され、経費精算業務が格段に楽になるはずです。
最初は設定が少し複雑に感じるかもしれませんが、一度作ってしまえば、あとはレシートをアップロードするだけ。日々の業務効率化に、ぜひこの「レシート処理自動化ワークフロー」を活用してみてくださいね!
AIエージェント導入を検討中の方!
まずは無料でご相談ください!
・業務改善でAIを使用したい
・AIで業務効率を上げたい
・どのAIを導入すればいいかわからない
・技術的サポートが必要な方