2026-09-06 · 原文发布日
自动核查司机酒精检测缺交记录并催办
司机通过n8n表单提交班前班后酒精检测数据,流程生成匹配键(司机+日期+班次)写入Google Sheets。每天收班后定时对照排班表找出缺交记录,用Gemini生成日语催办邮件发给当事司机,同时给管理员的Slack发一行汇总,缺交日志也回写表格。全部无缺失时只发一条确认消息。适合有车队或值班合规记录需求的场景照搬。
原文要点
作者sho oda的n8n模板:司机经n8n表单提交班前/班后酒精检测(司机ID、班次类型、读数、检查人、备注),流程生成记录ID、时间戳、班次日期和匹配键(司机+日期+班次),追加到Google Sheets的TestRecords页。每日定时任务读取当天Roster排班与TestRecords,用匹配键比对出缺交项;有缺交时用Google Gemini生成日语催办文和一行管理员汇总,经Gmail发给当事司机、Slack发汇总、缺交行写入MissingLog页;无缺交时只向管理员Slack发一条确认。需配置Google Sheets/Gmail/Slack OAuth2、Gemini(PaLM) API、表格ID、Slack频道和时区。
这次做成什么
搭一条'表单收集检测→每日定时比对排班→缺交分支发催办邮件+Slack汇总+写缺交日志,无缺失分支只发确认'的完整闭环,并用三行合成排班数据跑通分支判断。
准备什么
- n8n Cloud或自托管实例,可启用Form Trigger和Schedule Trigger
- Google账号:一个含Roster、TestRecords、MissingLog三个工作表的表格
- Gemini(PaLM) API密钥、Gmail与Slack的OAuth2授权
- 测试用Slack频道和测试邮箱,不要用真实司机邮箱
具体怎么做
建表并填入排班与检测列
在Google Sheets新建三个工作表:Roster列含matchKey、driverId、name、vehicle、email、shiftDate、shiftType;TestRecords同样含matchKey及reading、checker、notes;MissingLog含matchKey、driverId、email、missingCount、checkedAt。先在本站合成CSV样例基础上替换成你的测试司机。
搭收集分支
加Form Trigger节点,表单字段设driverId、shiftType(下拉before/after)、reading、checker、notes。后接一个Set/Code节点:生成recordId(可用随机串)、timestamp、shiftDate(按工作流时区取当天日期),并拼matchKey=driverId+'_'+shiftDate+'_'+shiftType,再用Google Sheets节点以Append模式写入TestRecords。把表单URL发给测试账号提交一条。
搭每日核查分支
加Schedule Trigger设为每天收班后运行。用两个Google Sheets读取节点分别拉当天Roster(按shiftDate过滤)和TestRecords全部行,接Code节点做键比对:把TestRecords的matchKey放进Set,遍历Roster,凡不在Set中的排班行即为缺交,输出缺交数组与missingCount。
接分支输出
用IF节点判断missingCount>0。真分支:对每条缺交调用Gemini节点,用下方提示词生成日语催办正文和一行管理员汇总,Gmail节点发到该司机email,Slack节点发汇总到管理员频道,再Append一行到MissingLog。假分支:仅Slack节点发一条'本日无缺失'确认。
可直接复制的材料
Roster测试数据(合成CSV)
本站虚构示例数据;替换为你的测试司机与当天日期,email用测试邮箱。
matchKey,driverId,name,vehicle,email,shiftDate,shiftType
D001_2026-09-06_before,D001,田中 一郎,トラック12号,tanaka.test@example.com,2026-09-06,before
D002_2026-09-06_after,D002,佐藤 花子,バン7号,sato.test@example.com,2026-09-06,after
D003_2026-09-06_before,D003,鈴木 健,トラック3号,suzuki.test@example.com,2026-09-06,beforeGemini催办文生成提示词
本站独立编写;{{name}}等在n8n中映射为上一步字段,具体字段名以你的节点输出为准。
あなたは運行管理者のアシスタントです。以下の未提出情報をもとに、ドライバー本人への丁寧で簡潔な提出催促メール本文(日本語、80〜120字)と、管理者向けの1行サマリー(日本語、30字以内)を出力してください。出力はJSONのみ、キーは driver_reminder と manager_summary。
氏名: {{name}}
車両: {{vehicle}}
日付: {{shiftDate}}
区分: {{shiftType}}(before=乗務前 / after=乗務後)输入与输出示例
本站虚构演示,非作者运行结果;邮件与Slack内容取决于Gemini实际输出。
输入
TestRecords当天只有一行:matchKey=D001_2026-09-06_before、driverId=D001、reading=0.00、checker=管理者A;Roster为上面三条排班。对应输出
比对结果缺交2条:D002_2026-09-06_after(佐藤 花子)与D003_2026-09-06_before(鈴木 健)。missingCount=2,走真分支:向sato.test@example.com和suzuki.test@example.com各发一封催办邮件,Slack管理员频道收到2行汇总,MissingLog追加2行,checkedAt为运行时刻。做完检查这些
- 提交一条表单后TestRecords新增行,且matchKey严格等于driverId_日期_班次格式
- 删除某司机当天记录后运行定时任务,该司机邮箱收到催办、MissingLog多一行、Slack有汇总
- 补齐全员记录后再次运行,只收到一条'无缺失'的Slack确认,Gmail无新邮件
- 同一记录重复提交时能在TestRecords中识别(两条同matchKey行),不导致缺交误判
容易卡住的地方
- 工作流时区必须与运营日一致,否则跨零点班次日期错位、匹配键对不上
- Roster与TestRecords的matchKey拼接规则(分隔符、日期格式)必须完全一致,差一个字符就全量误报缺交
- Gemini(PaLM) API与Google Sheets/Gmail是不同凭据,漏配任何一个对应节点直接报错
- ShiftType取值若司机手输成'Before'等变体会生成不同匹配键,表单务必用下拉固定值
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Detect missing alcohol test records with Gemini, Gmail, Slack and Google Sheets
- 原作者
- sho oda
- 原始发布日期
- 2026-09-06T06:44:41.678Z
- 来源
- https://n8n.io/workflows/19276