2026-09-15 · 原文发布日
批发订单邮件自动核对价格表并回复客户
面向批发业务的n8n模板:每分钟检查Gmail中主题为wholesale order的未读邮件,过短的邮件直接进错误日志;用GPT-4o-mini把正文抽取成结构化的客户信息、PO号、交期和明细行。然后对照Google Sheets价格表逐行校验SKU是否有效、是否在售、是否满足整箱倍数、报价是否一致。有问题就自动回邮件列明需修改项,无问题则回确认邮件并附定价明细;无论结果如何都记入订单表、Telegram通知跟单员,周一早八点再发上周订单AI摘要。
原文要点
原模板用Gmail触发器每分钟匹配 is:unread subject:(wholesale order) 的未读邮件,规范发件人、主题、时间和正文,过短邮件进错误日志;gpt-4o-mini把正文抽取为客户信息、PO号、交期、备注和明细行的结构化数据;再读Google Sheets的PriceList标签逐行校验SKU有效、在售、整箱倍数和报价一致性;有问题回修改要求邮件,无问题回含定价的确认邮件;两路都写Orders表、发Telegram通知、把原邮件标记已读;每周一08:00汇总上周订单生成AI摘要邮件和Telegram简报。设置需Gmail/Sheets OAuth2、OpenAI凭据、Telegram机器人及PriceList、Orders、Errors三个标签。
这次做成什么
复刻一条批发订单邮件自动核对与回复流水线:邮件进来自动抽取明细、对照价格表校验、按结果回邮件并留痕通知。本站给出独立设计的字段映射、抽取提示词和合成测试数据,供导入模板后逐项替换核对。
准备什么
- 可接收订单邮件的Gmail账号及OAuth2凭据
- OpenAI API凭据且账号可用gpt-4o-mini模型
- 含PriceList、Orders、Errors三个标签的Google Sheets及OAuth2凭据
- 已创建可发消息的Telegram机器人和目标chat ID
- 一个n8n实例并已获取该模板工作流
具体怎么做
配置Gmail触发与长度分流
在Gmail Trigger节点填搜索式 is:unread subject:(wholesale order),每分钟轮询;后续节点把sender、subject、receivedAt、body整理成统一字段,用IF节点判断body长度,过短(本站练习设为少于80字符)的写入Errors标签并终止该分支。
接入OpenAI抽取订单结构
在OpenAI节点选gpt-4o-mini,粘贴下方抽取提示词,把body作为变量传入,要求只返回JSON,字段含customer、poNumber、deliveryDate、notes和items数组(sku、qty、quotedPrice)。
准备并读取价格表
在PriceList标签建列sku、product、unit_price、case_pack、status,填入下方合成示例行;用Google Sheets节点整表读出后按sku建查找表。
逐行校验并分支
循环items逐行检查:sku是否存在、status是否为active、qty是否为case_pack整数倍、quotedPrice是否等于unit_price;收集问题列表,用IF节点按问题列表是否为空分两路。
回复、留痕与通知
问题路:Gmail节点回复修改要求邮件列出每行问题;无问题路:回复确认邮件附各SKU定价明细。两路都追加一行到Orders标签(状态分别为needs_revision/confirmed),Telegram节点向跟单chat ID发摘要,最后把原邮件标记已读。
开启周一摘要
启用模板中的Schedule Trigger(周一08:00),读Orders表最近7天记录,交给OpenAI生成简短摘要,经Gmail发出并把收件人改为你的真实邮箱,再发一条Telegram简报。
可直接复制的材料
订单正文抽取提示词(喂给gpt-4o-mini)
本站独立编写的抽取提示词,{{$json.body}}需按你的n8n表达式写法替换为实际正文变量;字段名须与后续校验节点一致。
你是批发订单解析助手。从下面的客户邮件正文中抽取订单信息,只输出一个JSON对象,不要输出任何解释、不要使用代码块。
字段要求:
- customer: 对象,含 name(客户名)、email(发件邮箱)、company(公司,没有则为空字符串)
- poNumber: 采购单号字符串,没有则为空字符串
- deliveryDate: 期望交期,格式YYYY-MM-DD,没有则为空字符串
- notes: 备注字符串
- items: 数组,每个元素含 sku(货号字符串)、qty(数量,整数)、quotedPrice(客户报价,数字,邮件没写单价则为null)
邮件正文如下:
{{$json.body}}合成PriceList测试数据(CSV)
本站虚构练习数据,非真实商品;导入Google Sheets的PriceList标签后使用。
sku,product,unit_price,case_pack,status
SKU-1001,有机燕麦片1kg,45.00,12,active
SKU-1002,冷压花生油5L,128.00,6,active
SKU-1003,手工皂礼盒,66.00,24,inactive
SKU-1004,杂粮组合装2kg,58.50,10,active修改要求邮件正文模板
{{#each}}为示意循环写法,实际在n8n中可把问题列表先拼成一段文本再插入邮件正文;变量需替换为节点输出。
主题:关于您的批发订单 {{poNumber}} 需要修改
您好 {{customer.name}}:
我们核对您的订单时发现以下问题,请修改后回复本邮件:
{{#each issues}}
- 货号 {{sku}}:{{problem}}
{{/each}}
修正后我们会尽快确认并发货安排。谢谢!输入与输出示例
本站虚构演示,按上述合成价格表手工推导,非实际运行结果。
输入
一封合成练习邮件:发件 buyer@demo-retail.cn,主题 wholesale order,正文:您好,PO号PO-2026-031,希望2026-10-15前到货。请报价:SKU-1001 来24件,单价45;SKU-1002 来5件,单价128;SKU-1003 来48件,单价66。联系人王琳。对应输出
校验结果:SKU-1001通过(24是12的倍数、价格一致、在售);SKU-1002数量5不是case_pack 6的整数倍→问题行;SKU-1003状态为inactive→问题行。流程走修改要求分支:回复邮件列明两条问题,Orders表追加一行状态needs_revision,Telegram推送“PO-2026-031需修改:2处问题”,原邮件标记已读。做完检查这些
- 发送符合搜索式的测试邮件后,Orders标签在一两个轮询周期内出现对应新行且状态正确
- 数量不是整箱倍数或SKU停售时,客户收到列明具体问题的修改要求邮件而非确认邮件
- 全部行合规时,确认邮件包含每个SKU的单价与小计,且原邮件在Gmail中变为已读
- 过短邮件不出现在Orders表,而是写入Errors标签
- Telegram在两种结果下都能收到含PO号的通知
容易卡住的地方
- Gmail触发器只认匹配搜索式的未读邮件,主题不含wholesale order的订单不会进入流程
- OpenAI输出必须严格为JSON,正文含表格或图片附件时抽取可能缺行,需用测试邮件验证
- PriceList列名与校验节点的字段映射不一致会导致全部SKU被判无效
- 周一摘要节点里原模板收件人是占位邮箱test@atlr.dev,必须改成自己的地址再启用
- 标记已读发生在写表之后,中途失败会重复处理同一邮件,必要时自行加去重
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Validate wholesale order emails against a Google Sheets price list with Gmail and GPT-4o
- 原作者
- Khairul Muhtadin
- 原始发布日期
- 2026-09-15T06:41:39.580Z
- 来源
- https://n8n.io/workflows/19606