2026-09-02 · 原文发布日
订单邮件自动提取成CSV并登记入表
每分钟监听Gmail订单邮件:带附件的订单先上传到OpenAI Files并建向量库,用GPT-4o-mini结合文件检索提取订单头和明细行为JSON,转CSV传到Google Drive,再向Google Sheets追加订单日志;AI提取失败时走Chat Completions兜底解析。另有第二条管线解析转发的iPaper订单邮件。适合把邮件订单流结构化的贸易或电商团队。
原文要点
原模板流程是:Gmail每分钟触发,按MIME把带附件订单与其他邮件分流;附件先下载、上传OpenAI Files、建向量库并挂文件,轮询处理完成后用GPT-4o-mini做file search抽取订单头与明细JSON;拆行转CSV上传Google Drive,抽取报错时改走Chat Completions兜底,再把CSV链接与客户/订单字段追加到Google Sheets。另有转发iPaper文本订单的第二条解析管线。
这次做成什么
在n8n搭一条“订单邮件→结构化JSON→CSV→Drive→Sheets日志”的可演示流程;本站提供独立练习方案,用合成订单邮件和隔离测试凭据复刻主干,不声称已运行原模板。
准备什么
- 一个可收发测试邮件的Gmail账号及n8n Gmail OAuth2凭据
- OpenAI API key,且账号可用Files/vector stores/Chat Completions
- Google Drive测试文件夹ID与Google Sheets测试表ID
- n8n可访问Gmail、OpenAI、Drive、Sheets四类凭据权限
- 仅供练习的合成订单PDF/文本,不含真实客户隐私或密钥
具体怎么做
建触发与分流
在n8n新建Workflow,放Gmail Trigger,轮询间隔设1分钟,过滤主题如ORDER/PO;后接Switch按message.mimeType或attachments是否存在分两路:带附件进AI抽取,无附件但主题含iPaper进文本解析。
处理附件订单
带附件分支用Gmail Download Attachment取文件,HTTP Request走OpenAI Files上传;再调vector stores创建库并attach file,随后设Wait/Loop轮询file status直到completed,失败超过次数进人工异常表。
AI抽取并兜底
用OpenAI节点/Responses风格请求GPT-4o-mini,启用file search,输出严格JSON:header与items数组;若返回error字段或JSON校验失败,路由到Chat Completions,用邮件正文+附件文本重抽,仍失败写入Sheets的ERRORS标签。
生成CSV并登记
用Code节点把items展开成行,字段映射orderRef,poNumber,orderDate,customerName,email,phone,address,sku,qty,unitPrice;Convert to CSV后上传Google Drive到测试文件夹,取webViewLink;Sheets Append Row写入name,email,phone,address,Order REF,PO Number,Order Date,Google File Link,status。
可直接复制的材料
GPT-4o-mini订单抽取提示词
本站独立编写示例;模型名来自原导读,向量库file search需在n8n/OpenAI侧核对可用参数。
你是订单结构化抽取器。只允许使用已挂载向量库文件和当前邮件内容,禁止推测。输出必须为合法JSON,不要Markdown。结构:{"header":{"orderRef":"","poNumber":"","orderDate":"YYYY-MM-DD","customer":{"name":"","email":"","phone":"","address":"","county":""}},"items":[{"sku":"","description":"","qty":0,"unitPrice":0,"currency":"USD"}],"error":null}。规则:缺字段留空字符串或0;qty与unitPrice必须是数字;若无法可靠抽取,返回{"header":null,"items":[],"error":"无法抽取:原因"}。测试订单邮件正文
合成练习输入;邮箱、电话、地址均为虚构,勿放入真实客户数据。
Subject: ORDER PO-8842 ACME RETAIL
Hello Sales,
Please process order REF ORD-2026-0917, PO Number PO-8842, order date 2026-09-02.
Customer: Acme Retail LLC, buyer@example.test, +1-555-0100, 12 Harbor Rd, Travis County.
Lines:
SKU IPA-6PK, Hoppy IPA 6 pack, qty 20, unit price 11.50 USD
SKU LAGER-24, Classic Lager case, qty 8, unit price 24.00 USD
Thanks.n8n字段映射配置
需替换两个REPLACE_ID;为本站独立方案,不是原工作流可导入JSON。
{"driveFolderId":"REPLACE_TEST_DRIVE_FOLDER_ID","sheetId":"REPLACE_TEST_SHEET_ID","sheetTab":"Order Log","appendColumns":["name","email","phone","address","Order REF","PO Number","Order Date","Google File Link","status"],"csvHeader":["orderRef","poNumber","orderDate","customerName","email","phone","address","sku","qty","unitPrice","currency"],"gmailFilter":"subject:(ORDER OR PO OR iPaper) newer_than:1d","errorTab":"ERRORS"}输入与输出示例
本站虚构演示,未运行原模板;逗号地址在CSV内需按RFC加引号。
输入
用上方测试订单正文作为无附件邮件,主题为ORDER PO-8842 ACME RETAIL,触发后应抽出2条明细并生成CSV。对应输出
CSV关键行:orderRef,poNumber,orderDate,customerName,email,phone,address,sku,qty,unitPrice,currency\nORD-2026-0917,PO-8842,2026-09-02,Acme Retail LLC,buyer@example.test,+1-555-0100,"12 Harbor Rd, Travis County",IPA-6PK,20,11.50,USD\nORD-2026-0917,PO-8842,2026-09-02,Acme Retail LLC,buyer@example.test,+1-555-0100,"12 Harbor Rd, Travis County",LAGER-24,8,24.00,USD;Sheets追加status=OK且Google File Link指向Drive测试CSV。做完检查这些
- Gmail Trigger只捕获测试主题,不误抓取真实收件箱其他邮件
- AI输出通过JSON.parse且items为数组,qty/unitPrice为数字
- Drive中出现同名订单CSV且Sheets新增同一orderRef日志
- error非空时进入兜底,兜底失败写入ERRORS而非静默丢单
- 测试结束后删除OpenAI Files/向量库与Drive CSV,隔离凭据未用于生产
容易卡住的地方
- Gmail触发过滤器过宽会抽错发票、营销邮件,应先限定标签和测试时段
- OpenAI Files与向量库可能产生费用,且处理完成前必须轮询而非立即查询
- Google Sheets列名不一致会导致Append Row错位或空字段
- 原模板没有提供下载文件时,本站不伪造可导入n8n JSON,仅给可照做映射
- CSV含逗号、换行、多币种时要做转义,否则下游表格会串列
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Extract and log email orders with Gmail, GPT-4o-mini, and Google Drive/Sheets
- 原作者
- Rahul Joshi
- 原始发布日期
- 2026-09-02T15:31:31.846Z
- 来源
- https://n8n.io/workflows/19084