PDF行程提取至Google表格(GPT-4.1-Mini + Gmail通知)
中级
这是一个自动化工作流,包含 9 个节点。主要使用 Gmail, SplitOut, FormTrigger, GoogleSheets, SplitInBatches 等节点。 使用GPT-4.1-Mini将PDF行程提取到Google表格,并通过Gmail发送通知
前置要求
- •Google 账号和 Gmail API 凭证
- •Google Sheets API 凭证
- •OpenAI API Key
使用的节点 (9)
分类
-
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "FaoXqBQDK5JryXkW",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
"templateCredsSetupCompleted": true
},
"name": "Extract PDF Itineraries to Google Sheets with GPT-4.1-Mini & Gmail Notifications",
"tags": [],
"nodes": [
{
"id": "51147ae9-3e42-474b-aecf-321b364b8b11",
"name": "Create Email",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1072,
960
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Agency Name: {{ $json['Agency Name'] }} \nEmail:{{ $json.Email }}\nAddress: {{ $json.Address }}\nPhone:{{ $json.Phone }}\nDate:{{ $json.Date }}\nTour:{{ $json.tour }}\nDeparture Date: {{ $json['departure date'] }}"
},
{
"role": "system",
"content": "=# Overview\nYou are an email specialist for a Tour Agency. You will receive tour itinerary information. Your task is to confirm receipt of the itinerary and notify the relevant parties.\n\n## Email\nInform the team that the itinerary has been received and processed. Notify them that it has been updated in the Tour Database and provide them with the access link to view it.\n https://docs.google.com/spreadsheets/d/1lg-GRBTQCvM9WC_Mbhe4YXwgyrRcHm8K2JYDHg4XOww/edit?gid=0#gid=0\n\n## Output\nOutput the following parameters separately:\nSubject\nEmail"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "OGYj7DgYv5GFLFZk",
"name": "OpenAi account 2"
}
},
"typeVersion": 1.8
},
{
"id": "ab57e57e-c161-48b3-ab73-caea2ef9c12c",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
544,
1136
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "OGYj7DgYv5GFLFZk",
"name": "OpenAi account 2"
}
},
"typeVersion": 1.2
},
{
"id": "6dd88c5f-6724-4872-97fc-0cc152d7446d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1024,
768
],
"parameters": {
"width": 784,
"height": 992,
"content": "# Extract PDF Itineraries to Google Sheets with GPT-4.1-Mini & Gmail Notifications\n\n## Overview\nAutomates PDF data extraction using OpenAI GPT, saves to Google Sheets, sends email confirmations. Reduces manual entry by 90%.\n\n## How It Works\n1. Receives PDF uploads via form\n2. Splits & loops through files\n3. AI extracts structured data\n4. Appends to Sheets with timestamps\n5. Sends confirmation email\n\n## Prerequisites\n- OpenAI API key ([platform.openai.com](https://platform.openai.com))\n- Google Workspace (Sheets & Gmail)\n- n8n v1.0.0+\n\n## Setup\n1. Add OpenAI API key to n8n credentials\n2. Create Google Sheet with extraction columns, authorize OAuth2\n3. Configure Gmail OAuth2\n4. Import workflow JSON\n5. Edit AI prompt for your fields\n6. Activate & share form URL\n\n## Customization\n- Modify extraction prompts\n- Adjust Sheets mapping\n- Customize email templates\n- Add error handling/validation\n- Extend to Word/Excel files\n\n## Use Cases\nInvoices, expense reports, resumes, contracts, forms, legal docs\n"
},
"typeVersion": 1
},
{
"id": "e58f6aab-f60d-4eba-9d3c-4aba55d299e4",
"name": "Extracted information to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
848,
960
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.output[' Date'] }}",
"tour": "={{ $json.output.tour }}",
"Email": "={{ $json.output.Email }}",
"Phone": "={{ $json.output.Phone }}",
"Address": "={{ $json.output.Address }}",
"Agency Name": "={{ $json.output['Agency Name'] }}",
"departure date": "={{ $json.output['departure date'] }}"
},
"schema": [
{
"id": "Agency Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Agency Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Address",
"type": "string",
"display": true,
"required": false,
"displayName": "Address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone",
"type": "string",
"display": true,
"required": false,
"displayName": "Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "tour",
"type": "string",
"display": true,
"required": false,
"displayName": "tour",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "departure date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "departure date",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Agency Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lg-GRBTQCvM9WC_Mbhe4YXwgyrRcHm8K2JYDHg4XOww/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1lg-GRBTQCvM9WC_Mbhe4YXwgyrRcHm8K2JYDHg4XOww",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1lg-GRBTQCvM9WC_Mbhe4YXwgyrRcHm8K2JYDHg4XOww/edit?usp=drivesdk",
"cachedResultName": "tour"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "KBo80D4RMDyyBspg",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.5
},
{
"id": "8f5ff28e-0301-4cd9-bdd2-2d9278c2d0ec",
"name": "Loop Over Items ensures each document",
"type": "n8n-nodes-base.splitInBatches",
"position": [
288,
960
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "e5a12fea-0bde-49db-8b48-b58aa31bbfb2",
"name": "Form receives multiple PDF files",
"type": "n8n-nodes-base.formTrigger",
"position": [
-176,
960
],
"webhookId": "881300df-4407-4830-9c29-1df843946ddc",
"parameters": {
"options": {},
"formTitle": "LOAD MULTIPLE FILES",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "files",
"requiredField": true,
"acceptFileTypes": "*.pdf"
}
]
},
"formDescription": "Select multiple pdf files to run this example."
},
"typeVersion": 2.2
},
{
"id": "453337ca-283e-4e6d-be87-87a435537032",
"name": "Split Files processes each PDF individually",
"type": "n8n-nodes-base.splitOut",
"position": [
48,
960
],
"parameters": {
"options": {
"includeBinary": true,
"destinationFieldName": "=files"
},
"fieldToSplitOut": "=files"
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "940b3087-4fc8-439d-98e3-7e14f034becc",
"name": "email confirmation sent with results",
"type": "n8n-nodes-base.gmail",
"position": [
1424,
1088
],
"webhookId": "2c4c1f75-af3a-4c51-975c-0d493d317637",
"parameters": {
"sendTo": " xxxxxxxx@gmail.com",
"message": "= {{ $('Create Email').item.json.message.content.Email }}",
"options": {
"appendAttribution": false
},
"subject": "={{ $json.message.content.Subject }}",
"emailType": "text"
},
"credentials": {
"gmailOAuth2": {
"id": "zkm2omCjmdLquZGT",
"name": "Gmail account 2"
}
},
"typeVersion": 2.1
},
{
"id": "5f12a35a-6019-4b89-83c1-9ceadaa60cad",
"name": "Analyzes & extract PDF",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
544,
960
],
"parameters": {
"text": "={{ $json.files.filename }}",
"options": {
"systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
},
"attributes": {
"attributes": [
{
"name": "Agency Name",
"required": true,
"description": "the name of the client"
},
{
"name": "Email",
"required": true,
"description": "the email of the client"
},
{
"name": "Address",
"required": true,
"description": "the address of the client"
},
{
"name": "Phone",
"required": true,
"description": "the phone number of the client"
},
{
"name": " Date",
"type": "date",
"required": true,
"description": "the date "
},
{
"name": "tour",
"required": true,
"description": "holiday package tour"
},
{
"name": "departure date",
"required": true,
"description": "departure date"
}
]
}
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "17da634d-89f9-4c60-8c9b-f8b018c99481",
"connections": {
"51147ae9-3e42-474b-aecf-321b364b8b11": {
"main": [
[
{
"node": "940b3087-4fc8-439d-98e3-7e14f034becc",
"type": "main",
"index": 0
}
]
]
},
"ab57e57e-c161-48b3-ab73-caea2ef9c12c": {
"ai_languageModel": [
[
{
"node": "5f12a35a-6019-4b89-83c1-9ceadaa60cad",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"5f12a35a-6019-4b89-83c1-9ceadaa60cad": {
"main": [
[
{
"node": "e58f6aab-f60d-4eba-9d3c-4aba55d299e4",
"type": "main",
"index": 0
}
]
]
},
"e5a12fea-0bde-49db-8b48-b58aa31bbfb2": {
"main": [
[
{
"node": "453337ca-283e-4e6d-be87-87a435537032",
"type": "main",
"index": 0
}
]
]
},
"940b3087-4fc8-439d-98e3-7e14f034becc": {
"main": [
[
{
"node": "8f5ff28e-0301-4cd9-bdd2-2d9278c2d0ec",
"type": "main",
"index": 0
}
]
]
},
"8f5ff28e-0301-4cd9-bdd2-2d9278c2d0ec": {
"main": [
[],
[
{
"node": "5f12a35a-6019-4b89-83c1-9ceadaa60cad",
"type": "main",
"index": 0
}
]
]
},
"e58f6aab-f60d-4eba-9d3c-4aba55d299e4": {
"main": [
[
{
"node": "51147ae9-3e42-474b-aecf-321b364b8b11",
"type": "main",
"index": 0
}
]
]
},
"453337ca-283e-4e6d-be87-87a435537032": {
"main": [
[
{
"node": "8f5ff28e-0301-4cd9-bdd2-2d9278c2d0ec",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用GPT-4 Mini、Google Sheets和Gmail提取并整理学术出
使用GPT-4 Mini、Google Sheets和Gmail提取并整理学术出版物
Html
Sort
Gmail
+
Html
Sort
Gmail
26 节点Cheng Siong Chin
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+
If
Ftp
Set
113 节点I versus AI
其他
基于AI的MIS代理
基于AI的管理信息系统代理
If
Set
Code
+
If
Set
Code
129 节点Kumar Shivam
客户支持
潜在客户开发与邮件工作流
使用Google Maps、SendGrid和AI自动化B2B潜在客户开发与邮件营销
If
Set
Code
+
If
Set
Code
141 节点Ezema Kingsley Chibuzo
潜在客户开发
使用Apollo、Apify和GPT自动化B2B潜在客户开发与个性化冷邮件
使用Apollo、Apify和GPT自动化B2B潜在客户开发与个性化冷邮件
If
Wait
Gmail
+
If
Wait
Gmail
24 节点Mirai
使用 OpenAI、ElevenLabs 和 Fal.ai 自动化病毒式内容创作
使用 OpenAI、ElevenLabs 和 Fal.ai 自动化病毒式内容创作,适用于视频、播客和 ASMR
Set
Code
Wait
+
Set
Code
Wait
97 节点Adam Crafts
内容创作
工作流信息
难度等级
中级
节点数量9
分类-
节点类型9
作者
Cheng Siong Chin
@cschinProf. Cheng Siong CHIN serves as Chair Professor in Intelligent Systems Modelling and Simulation in Newcastle University, Singapore. His academic credentials include an M.Sc. in Advanced Control and Systems Engineering from The University of Manchester and a Ph.D. in Robotics from Nanyang Technological University.
外部链接
在 n8n.io 查看 →
分享此工作流