自动化PDF发票处理与审批流程,使用OpenAI和Google表格
高级
这是一个Finance, AI领域的自动化工作流,包含 17 个节点。主要使用 If, Gmail, FormTrigger, GoogleDrive, GmailTrigger 等节点,结合人工智能技术实现智能自动化。 自动化PDF发票处理与审批流程,使用OpenAI和Google表格
前置要求
- •Google 账号和 Gmail API 凭证
- •Google Drive API 凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (17)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "d1786ab0d745a7498abf13a9c2cdabb1374c006e889b79eef64ce0386b8f8a41",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "32dec238-615e-461d-ac9b-e09bdcb2a73f",
"name": "OpenAI 聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
560,
200
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "MGwGMKEkdcjzlYCw",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "4cb973bc-385f-42db-b79e-942c75d97a84",
"name": "多表:您可以连接多个表以实现有组织的数据结构",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
780,
200
],
"parameters": {
"jsonSchemaExample": "{\n \"invoice_number\": \"\",\n \"invoice_date\": \"\",\n \"due_date\": \"\",\n \"vendor_name\": \"\",\n \"total_amount\": \"\",\n \"currency\": \"\",\n \"items\": [\n {\n \"description\": \"\",\n \"amount\": \"\"\n }\n ],\n \"tax\": \"\",\n \"category\": \"\"\n}"
},
"typeVersion": 1.2
},
{
"id": "b7ed6cf6-e965-43e0-abab-919ab598e62a",
"name": "发票文件夹监视器",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-100,
-220
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "id",
"value": "1KJ4fvXcKVMGJunsKvPYf8PkX5K9SVwFk"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "SEUhrgz30NMJS3cH",
"name": "Google Drive account"
}
},
"typeVersion": 1
},
{
"id": "d2a0d543-1ee3-4852-9751-69aae3b9864a",
"name": "下载发票 PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
100,
-220
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "SEUhrgz30NMJS3cH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "80345f83-02fa-47ab-86f0-1e01bd3429e7",
"name": "发票解析 AI 代理",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
580,
0
],
"parameters": {
"text": "=You are an intelligent invoice parser. I will give you raw text extracted from a PDF invoice. \n\n========================\nSTART OF RAW INVOICE TEXT\n\n{{ $json.text }}\n\nEND OF RAW INVOICE TEXT\n========================\n\nYour job is to:\n\n1. Extract key information from the invoice such as:\n - invoice_number\n - invoice_date\n - due_date (if available)\n - vendor_name\n - total_amount\n - currency (e.g., USD, IDR, etc.)\n - items (as a list of item descriptions and their amounts)\n - tax (if available)\n\n2. Detect the invoice **category**, such as:\n - Utilities\n - Office Supplies\n - Travel\n - Software\n - Food & Beverage\n - Others (if unknown)\n\n3. Return the result in this exact JSON format:\n\n```json\n{\n \"invoice_number\": \"\",\n \"invoice_date\": \"\",\n \"due_date\": \"\",\n \"vendor_name\": \"\",\n \"total_amount\": \"\",\n \"currency\": \"\",\n \"items\": [\n {\n \"description\": \"\",\n \"amount\": \"\"\n }\n ],\n \"tax\": \"\",\n \"category\": \"\"\n}\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.9
},
{
"id": "57649f6a-2d4d-4072-92bd-ffea26fdd4dd",
"name": "插入发票数据",
"type": "n8n-nodes-base.googleSheets",
"position": [
1460,
0
],
"parameters": {
"columns": {
"value": {
"Tax": "={{ $('Invoice Parser AI Agent').item.json.output.tax }}",
"Items": "={{ $('Invoice Parser AI Agent').item.json.output.items }}",
"Approved": "={{ $json.data['Approve Invoice?'] }}",
"Category": "={{ $('Invoice Parser AI Agent').item.json.output.category }}",
"Currency": "={{ $('Invoice Parser AI Agent').item.json.output.currency }}",
"Due Date": "={{ $('Invoice Parser AI Agent').item.json.output.due_date }}",
"Reviewed By": "={{ $json.data['Reviewed By'] }}",
"Vendor Name": "={{ $('Invoice Parser AI Agent').item.json.output.vendor_name }}",
"Invoice Date": "={{ $('Invoice Parser AI Agent').item.json.output.invoice_date }}",
"Total Amount": "={{ $('Invoice Parser AI Agent').item.json.output.total_amount }}",
"Approval Notes": "={{ $json.data['Approval Notes'] }}",
"Invoice Number": "={{ $('Invoice Parser AI Agent').item.json.output.invoice_number }}"
},
"schema": [
{
"id": "Invoice Number",
"type": "string",
"display": true,
"required": false,
"displayName": "Invoice Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Invoice Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Invoice Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Due Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Due Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Vendor Name",
"type": "string",
"display": true,
"required": false,
"displayName": "Vendor Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Total Amount",
"type": "string",
"display": true,
"required": false,
"displayName": "Total Amount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Currency",
"type": "string",
"display": true,
"required": false,
"displayName": "Currency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Items",
"type": "string",
"display": true,
"required": false,
"displayName": "Items",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Tax",
"type": "string",
"display": true,
"required": false,
"displayName": "Tax",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Category",
"type": "string",
"display": true,
"required": false,
"displayName": "Category",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Approved",
"type": "string",
"display": true,
"required": false,
"displayName": "Approved",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Approval Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Approval Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Reviewed By",
"type": "string",
"display": true,
"required": false,
"displayName": "Reviewed By",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ueJfN5dFTXY3_AdvnYUL5_RjV9YwSFvbxwA_ivtqnJk/edit#gid=0",
"cachedResultName": "Invoices"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ueJfN5dFTXY3_AdvnYUL5_RjV9YwSFvbxwA_ivtqnJk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ueJfN5dFTXY3_AdvnYUL5_RjV9YwSFvbxwA_ivtqnJk/edit?usp=drivesdk",
"cachedResultName": "Copy of PDF Invoice Parser - n8n template"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "ypmzFxQFfAacuVVC",
"name": "Google Sheets account"
}
},
"typeVersion": 4.5
},
{
"id": "2993f865-d46c-489b-ab34-3c62b2c3cb1f",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-460,
-220
],
"parameters": {
"color": 4,
"width": 280,
"height": 500,
"content": "## 需要设置"
},
"typeVersion": 1
},
{
"id": "691f4972-8d18-49fd-b8cd-0c6b2464b078",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-120,
420
],
"parameters": {
"color": 5,
"width": 700,
"height": 560,
"content": "## 🧾 使用OpenAI和Google Sheets的自动化PDF发票处理与审批流程"
},
"typeVersion": 1
},
{
"id": "2463666d-8c40-4821-b907-9741e62ce1e7",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
420
],
"parameters": {
"color": 5,
"width": 620,
"height": 620,
"content": "## 📋 工作流流程概览"
},
"typeVersion": 1
},
{
"id": "8483b8ef-83d7-4b3f-ad54-b9ec23efc911",
"name": "发送发票以供审批",
"type": "n8n-nodes-base.gmail",
"position": [
920,
0
],
"webhookId": "a23938a4-fc6c-4445-8dee-17e501e92e06",
"parameters": {
"sendTo": "replace_with_approver_email@yopmail.com",
"message": "=A new invoice has been submitted and requires your review and approval:",
"options": {},
"subject": "=[Action Required] Invoice Approval Request – {{ $json.output.vendor_name }}",
"operation": "sendAndWait",
"formFields": {
"values": [
{
"fieldType": "dropdown",
"fieldLabel": "Approve Invoice?",
"fieldOptions": {
"values": [
{
"option": "Yes"
},
{
"option": "No"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Reviewed By",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Approval Notes"
}
]
},
"responseType": "customForm"
},
"credentials": {
"gmailOAuth2": {
"id": "sWl7FFMkEUYBj0zM",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "0fece28b-13c8-4b0d-9c1b-84047a3503f6",
"name": "监控电子邮件附件",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
100,
0
],
"parameters": {
"simple": false,
"filters": {},
"options": {
"downloadAttachments": true,
"dataPropertyAttachmentsPrefixName": "attachment_"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "sWl7FFMkEUYBj0zM",
"name": "Gmail account"
}
},
"typeVersion": 1.2
},
{
"id": "d210d1c5-865f-494e-a69c-d25ac462869b",
"name": "上传发票(PDF)表单",
"type": "n8n-nodes-base.formTrigger",
"position": [
100,
200
],
"webhookId": "e033bea9-70e8-41e2-aea4-1b95714ea257",
"parameters": {
"options": {},
"formTitle": "Upload Invoice (PDF)",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "Upload",
"multipleFiles": false,
"requiredField": true,
"acceptFileTypes": ".pdf"
}
]
},
"formDescription": "Upload your invoice PDF using this form."
},
"typeVersion": 2.2
},
{
"id": "4703ddb5-1e07-43b9-a465-c9aced0ac9d8",
"name": "从Drive PDF提取文本",
"type": "n8n-nodes-base.extractFromFile",
"position": [
300,
-220
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "7ca78f71-8c1e-42e2-8686-08f2a9bfc009",
"name": "从电子邮件PDF提取文本",
"type": "n8n-nodes-base.extractFromFile",
"position": [
300,
0
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "attachment_0"
},
"typeVersion": 1
},
{
"id": "0b4aff7d-8c92-4964-a38c-996b546ed23a",
"name": "从表单PDF提取文本",
"type": "n8n-nodes-base.extractFromFile",
"position": [
300,
200
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "Upload"
},
"typeVersion": 1
},
{
"id": "eef8e5e5-2b01-4ddd-8ea2-312fb41356de",
"name": "检查审批决定",
"type": "n8n-nodes-base.if",
"position": [
1180,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "451bfdfc-f645-4e3c-91cc-895558f45b11",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data['Approve Invoice?'] }}",
"rightValue": "Yes"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ac5dd79d-9d32-44f9-8a9b-2cc45757110b",
"name": "发送拒绝提醒",
"type": "n8n-nodes-base.gmail",
"position": [
1320,
260
],
"webhookId": "1c33c42a-0d8e-466f-a424-faba306c56af",
"parameters": {
"sendTo": "finance_team@yopmail.com",
"message": "=Hi Finance Team,\n\nAn invoice from {{ $('Invoice Parser AI Agent').item.json.output.vendor_name }} has been disapproved during the approval process.\n\nReviewed By: {{ $('Send Invoice for Approval').item.json.data['Reviewed By'] }}\nApproval Notes: {{ $('Send Invoice for Approval').item.json.data['Approval Notes'] }}\n\nPlease review and follow up as needed.\n\nThank you,\nAutomated Invoice System\n\n",
"options": {
"appendAttribution": false
},
"subject": "=[Alert] Invoice Disapproved – {{ $('Invoice Parser AI Agent').item.json.output.vendor_name }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "sWl7FFMkEUYBj0zM",
"name": "Gmail account"
}
},
"typeVersion": 2.1
}
],
"pinData": {
"Invoice Parser AI Agent": [
{
"output": {
"tax": "8.50",
"items": [
{
"amount": "85.00",
"description": "Web Design - This is a sample description..."
}
],
"category": "Others",
"currency": "USD",
"due_date": "January 31, 2016",
"vendor_name": "DEMO - Sliced Invoices",
"invoice_date": "January 25, 2016",
"total_amount": "93.50",
"invoice_number": "INV-3337"
}
}
],
"Send Invoice for Approval": [
{
"data": {
"Reviewed By": "jack",
"Approval Notes": "notes approval",
"Approve Invoice?": "Yes"
}
}
]
},
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Invoice Parser AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Download Invoice PDF": {
"main": [
[
{
"node": "Extract Text from Drive PDF",
"type": "main",
"index": 0
}
]
]
},
"Send Rejection Alert": {
"main": [
[
{
"node": "Insert Invoice Data",
"type": "main",
"index": 0
}
]
]
},
"Invoice Folder Monitor": {
"main": [
[
{
"node": "Download Invoice PDF",
"type": "main",
"index": 0
}
]
]
},
"Check Approval Decision": {
"main": [
[
{
"node": "Insert Invoice Data",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Rejection Alert",
"type": "main",
"index": 0
}
]
]
},
"Invoice Parser AI Agent": {
"main": [
[
{
"node": "Send Invoice for Approval",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Invoice Parser AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Monitor Email Attachments": {
"main": [
[
{
"node": "Extract Text from Email PDF",
"type": "main",
"index": 0
}
]
]
},
"Send Invoice for Approval": {
"main": [
[
{
"node": "Check Approval Decision",
"type": "main",
"index": 0
}
]
]
},
"Upload Invoice (PDF) Form": {
"main": [
[
{
"node": "Extract Text from Form PDF",
"type": "main",
"index": 0
}
]
]
},
"Extract Text from Form PDF": {
"main": [
[
{
"node": "Invoice Parser AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Extract Text from Drive PDF": {
"main": [
[
{
"node": "Invoice Parser AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Extract Text from Email PDF": {
"main": [
[
{
"node": "Invoice Parser AI Agent",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 财务, 人工智能
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
AI驱动的PDF发票解析器 - Google Drive、Google Sheets和OpenAI
基于Google Drive、Google Sheets和OpenAI的AI驱动PDF发票解析器
Google Drive
Google Sheets
Agent
+5
10 节点Billy Christi
财务
使用GPT-4、Airtable和Google Drive筛选和评估求职者
使用GPT-4、Airtable和Google Drive筛选和评估求职者
If
Set
Gmail
+9
22 节点Billy Christi
人力资源
AI驱动的RAG文档处理与聊天机器人 - Google Drive、Supabase、OpenAI
基于Google Drive、Supabase和OpenAI的AI驱动RAG文档处理与聊天机器人
Set
Code
Limit
+19
35 节点Billy Christi
人工智能
使用OpenAI、Google表格和AI代理自动回复Gmail咨询
使用OpenAI、Google表格和AI代理自动回复Gmail咨询
Gmail
Gmail Trigger
Google Sheets
+6
14 节点Billy Christi
客户支持
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+93
113 节点I versus AI
其他
哥伦比亚发票处理
使用Gmail、GPT-4o和Google Workspace提取并整理哥伦比亚发票
Xml
Code
Merge
+15
23 节点Juan Sanchez
财务
工作流信息
难度等级
高级
节点数量17
分类2
节点类型12
作者
Billy Christi
@billyI'm a professional software engineer and n8n expert with a passion for building scalable, no-code and low-code automation workflows. I specialize in creating seamless integrations between APIs, CRMs, and everyday tools to help businesses save time, reduce manual work, and operate smarter. Whether it's automating marketing pipelines, backend systems, or approval processes, I turn complex logic into simple, powerful workflows with n8n.
外部链接
在 n8n.io 查看 →
分享此工作流