2026-09-25 · 原文发布日
每天9点自动催收逾期发票:Sheets+OpenAI+Gmail
定时器每天上午9点读取Google Sheets的"Invoices"页,筛出逾期未付且三天内没催过的发票,按逾期天数分三档(客气、强硬、最终通知);把发票详情和语气档位交给OpenAI写简短催款邮件正文,在Gmail里生成发给客户的草稿,最终通知档还会附上表里的付款链接;最后把该行的"Last chased"更新为当前时间。表需含发票号、客户邮箱、到期日、金额、状态、付款链接等列。模板免费。
原文要点
作者Jupi Labs在n8n模板库发布的免费工作流:计划触发器每天上午9点运行,读取Google Sheets的Invoices页,筛出逾期未付且三天内未催过的发票,按逾期天数分客气、强硬、最终通知三档;把发票详情和档位指令交给OpenAI生成简短催款正文,在Gmail里创建发给客户的草稿,最终通知档附表中的付款链接,最后回写该行Last chased为当前时间。表必须含Invoice #、Client、Client email、Due、Amount、Status、Payment link、Last chased列,已付款用Status=PAID标记。
这次做成什么
搭好一条每天定时跑的发票催收流水线:自动筛选该催的发票、按逾期程度生成不同语气的催款邮件草稿、回写催收时间,人工只需在Gmail草稿箱里检查后点发送。以下提示词与示例表均为本站独立编写,用于练习与替换。
准备什么
- n8n账号(云版或自托管)并能导入模板库工作流
- Google账号:可访问含Invoices页的表格、Gmail发信权限
- OpenAI API密钥及可用额度,在n8n中新建OpenAI凭据
- 一张含指定八列表头的测试用Google表格
具体怎么做
导入模板并连接三类凭据
打开 https://n8n.io/workflows/19916 点Use for free复制到自己的n8n;依次点开Google Sheets读取节点、Gmail节点、OpenAI节点,各自选择或新建对应OAuth/API凭据,工作流画布上不应再出现红色凭据警告。
建表并绑定文档
在Google Sheets新建表格,第一个工作表改名Invoices,首行依次写Invoice #、Client、Client email、Due、Amount、Status、Payment link、Last chased八列(名称必须与模板一致);把本页下方artifact里的合成CSV粘进A2起的区域;回到n8n,在Sheets读取与更新两个节点中都选择这份文档和Invoices页。
核对筛选与分档逻辑
打开筛选节点确认条件为Status不等于PAID、Due早于当前日期、Last chased为空或早于三天前;打档位节点确认按逾期天数映射polite/firmer/final三档的边界,并记下天数阈值,后面提示词里的档位名称要与之一致。
替换OpenAI提示词
把OpenAI节点的提示词换成artifact中的催款提示词,把{{$json["Invoice #"]}}等占位改成本工作流实际的字段表达式;语气档位变量来自分档节点输出,最终通知档在Gmail节点里再追加Payment link字段。
手动测试再启用定时
先点Execute workflow手动跑一遍:Gmail草稿箱应出现与测试表中逾期发票数量一致的草稿,表里这些行的Last chased被填上时间戳;确认无误后激活工作流,让Schedule Trigger按每天上午9点自动运行。
可直接复制的材料
催款邮件生成提示词(粘贴到OpenAI节点)
本站独立编写的练习提示词;字段表达式需按你工作流里实际节点输出调整;原模板自带的英文提示词可在导入后对照替换。
你是一名专业但克制的应收账款专员。根据以下发票信息和催收档位,写一封简短的中文催款邮件正文(不超过150字,不要主题行,不要署名占位符以外的内容)。
发票号:{{$json["Invoice #"]}}
客户名称:{{$json["Client"]}}
到期日:{{$json["Due"]}}
金额:{{$json["Amount"]}}
催收档位:{{$json.tier}}(polite=客气提醒,语气温和、假设对方疏忽;firmer=强硬催促,明确指出已逾期并要求本周内付款;final=最终通知,说明将暂停服务或采取进一步措施,并提示使用随附付款链接)
要求:只输出邮件正文;不要编造发票以外的金额或日期;final档语气坚定但不使用威胁性词汇。Invoices页合成测试数据
本站虚构合成数据,邮箱与链接均为演示地址;假设今天为2026-09-25时,INV-1001与INV-1004应被选中,INV-1002因三天内催过被跳过,INV-1003已付款被跳过。
INV-1001,杭州明川设计,finance@mingchuan-demo.cn,2026-09-01,4800,UNPAID,https://pay-demo.example.com/inv-1001,
INV-1002,苏州岚图贸易,ap@lantu-demo.cn,2026-09-20,12600,UNPAID,https://pay-demo.example.com/inv-1002,2026-09-22T09:05:00
INV-1003,北京北辰咨询,billing@beichen-demo.cn,2026-09-24,3200,PAID,https://pay-demo.example.com/inv-1003,
INV-1004,深圳禾木科技,pay@hemu-demo.cn,2026-08-15,21500,UNPAID,https://pay-demo.example.com/inv-1004,输入与输出示例
本站虚构演示,提示词与输出均未实际调用OpenAI,仅示意最终通知档的形态;真实生成文案以模型实际返回为准。
输入
以上合成表中,INV-1004:客户深圳禾木科技,金额21500元,到期日2026-08-15,逾期41天,Last chased为空,分档结果为final。对应输出
Gmail草稿箱出现一封发给pay@hemu-demo.cn的草稿,主题为【最终通知】发票 INV-1004 逾期未付(主题行由Gmail节点的模板配置决定,不是提示词输出)。正文示意:尊敬的深圳禾木科技财务团队:发票INV-1004(金额21500元,到期日2026-08-15)已逾期41天且我们尚未收到款项。请立即通过以下链接完成付款:https://pay-demo.example.com/inv-1004 。若三日内仍未到账,我们将暂停相关服务并保留进一步追偿的权利。完成后该行Last chased回写为运行当天的时间戳。做完检查这些
- 手动执行后Gmail草稿箱出现INV-1001与INV-1004两封草稿
- INV-1003状态为PAID全程不产生任何草稿或更新
- INV-1002因Last chased在三天内被正确跳过
- 草稿正文语气与档位一致且final档包含付款链接
- 被选中的行Last chased被更新为本次运行时间戳
容易卡住的地方
- 列名必须与模板逐字一致,含大小写与#号,否则字段映射为空
- Due列需为表格可识别的日期格式,纯文本会导致逾期判断失效
- 忘记激活工作流时定时器不会运行,手动测试成功不代表已上线
- OpenAI与Gmail各自产生费用,草稿数量随逾期发票量增长
- 三天内重复催收的抑制依赖Last chased正确回写,更新节点选错文档会静默失败
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Chase overdue invoice payments from Google Sheets with OpenAI and Gmail
- 原作者
- Jupi Labs
- 原始发布日期
- 2026-09-24T17:32:38.435Z
- 来源
- https://n8n.io/workflows/19916