AI PLAY玩法更新持续收录
← 回到更新流

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频道和测试邮箱,不要用真实司机邮箱

具体怎么做

  1. 建表并填入排班与检测列

    在Google Sheets新建三个工作表:Roster列含matchKey、driverId、name、vehicle、email、shiftDate、shiftType;TestRecords同样含matchKey及reading、checker、notes;MissingLog含matchKey、driverId、email、missingCount、checkedAt。先在本站合成CSV样例基础上替换成你的测试司机。

  2. 搭收集分支

    加Form Trigger节点,表单字段设driverId、shiftType(下拉before/after)、reading、checker、notes。后接一个Set/Code节点:生成recordId(可用随机串)、timestamp、shiftDate(按工作流时区取当天日期),并拼matchKey=driverId+'_'+shiftDate+'_'+shiftType,再用Google Sheets节点以Append模式写入TestRecords。把表单URL发给测试账号提交一条。

  3. 搭每日核查分支

    加Schedule Trigger设为每天收班后运行。用两个Google Sheets读取节点分别拉当天Roster(按shiftDate过滤)和TestRecords全部行,接Code节点做键比对:把TestRecords的matchKey放进Set,遍历Roster,凡不在Set中的排班行即为缺交,输出缺交数组与missingCount。

  4. 接分支输出

    用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,before

Gemini催办文生成提示词

本站独立编写;{{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