8
n8n 中文网amn8n.com

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

分类

-
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "FaoXqBQDK5JryXkW",
  "meta": {
    "instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 GPT-4.1-Mini 和 Gmail 通知将 PDF 行程提取到 Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "51147ae9-3e42-474b-aecf-321b364b8b11",
      "name": "创建邮件",
      "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 聊天模型",
      "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": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        768
      ],
      "parameters": {
        "width": 784,
        "height": 992,
        "content": "# 使用 GPT-4.1-Mini 和 Gmail 通知将 PDF 行程提取到 Google Sheets"
      },
      "typeVersion": 1
    },
    {
      "id": "e58f6aab-f60d-4eba-9d3c-4aba55d299e4",
      "name": "提取的信息到 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": "循环项目确保每个文档",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        288,
        960
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "e5a12fea-0bde-49db-8b48-b58aa31bbfb2",
      "name": "表单接收多个 PDF 文件",
      "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": "拆分文件单独处理每个 PDF",
      "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": "发送包含结果的电子邮件确认",
      "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": "分析并提取 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": {
    "Create Email": {
      "main": [
        [
          {
            "node": "email confirmation sent with results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Analyzes & extract PDF",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Analyzes & extract PDF": {
      "main": [
        [
          {
            "node": "Extracted information to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Form receives multiple PDF files": {
      "main": [
        [
          {
            "node": "Split Files processes each PDF individually",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "email confirmation sent with results": {
      "main": [
        [
          {
            "node": "Loop Over Items ensures each document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items ensures each document": {
      "main": [
        [],
        [
          {
            "node": "Analyzes & extract PDF",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extracted information to Google Sheets": {
      "main": [
        [
          {
            "node": "Create Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Files processes each PDF individually": {
      "main": [
        [
          {
            "node": "Loop Over Items ensures each document",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

中级

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量9
分类-
节点类型9
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Cheng Siong Chin

Cheng Siong Chin

@cschin

Prof. 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 查看

分享此工作流