Google Sheets物流场景onEdit脚本需求:记录时间+单元格条件着色
Google Sheets 物流表格自动化解决方案(基于onEdit()脚本)
直接给你能实现所有需求的Google Apps Script代码,性能比数组公式好很多,不会卡顿:
function onEdit(e) { const sheet = e.source.getActiveSheet(); const editedCell = e.range; const colIndex = editedCell.getColumn(); const value = editedCell.getValue().toString().trim(); // 定义需要监控的列及其对应的时间戳列(列索引从1开始) const targetColumns = { 2: 3, // B列对应C列 6: 7, // F列对应G列 10: 11 // J列对应K列 }; // 1. 处理时间戳逻辑:仅首次输入时记录时间 if (targetColumns[colIndex]) { const timestampCol = targetColumns[colIndex]; const timestampCell = sheet.getRange(editedCell.getRow(), timestampCol); // 只有当时间戳单元格为空时,才写入当前时间 if (timestampCell.getValue() === "") { timestampCell.setValue(new Date()); // 可选:设置时间戳格式为你需要的样式,比如"yyyy-MM-dd HH:mm" timestampCell.setNumberFormat("yyyy-MM-dd HH:mm"); } // 2. 处理单元格背景色逻辑 if (value === "" || value.includes("VN")) { editedCell.setBackground("white"); } else if (value !== "") { editedCell.setBackground("red"); } } }
使用步骤
- 打开你的Google Sheets表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」
- 清空编辑器里默认的代码,粘贴上面的代码
- 点击左上角的「保存」按钮,给你的脚本项目起个名字(比如「物流表格自动化」)
- 关闭脚本编辑器,回到表格测试:在B/F/J列输入内容,看相邻列是否自动加时间,单元格背景是否符合规则
关键优化点
- 只在指定列被编辑时才触发逻辑,不会像数组公式那样全表循环计算,彻底解决卡顿问题
- 时间戳仅在首次输入时写入,后续修改内容不会更新时间,符合需求
- 格式设置和时间戳处理整合在同一个触发器里,减少重复操作
- 自动适配所有工作表,不管你新建多少个工作表,只要编辑指定列都会生效
注意事项
- 脚本用的是简单触发器,不需要额外授权,手动编辑单元格时会自动触发
- 时间戳的时区是脚本项目的默认时区,你可以在脚本编辑器的「设置」→「项目设置」里修改时区
- 如果需要批量导入数据后自动应用格式和时间戳,简单触发器可能无法触发,这时候需要创建「可安装触发器」(不过日常手动编辑足够用)
内容的提问来源于stack exchange,提问作者Artorias the Abysswalker
相关产品推荐
相关产品推荐

