如何在Google Sheets中实现故障工具的状态变更记录功能?
Google Sheets 工具故障自动记录实现方案
核心逻辑
- 当Tool List中工具状态从非
faulty改为faulty时,在Fault List新增一行记录,包含工具名称、故障发生的日期时间 - 当Tool List中工具状态从
faulty改为okay时,找到该工具在Fault List的最后一条未记录恢复时间的故障记录,补充恢复日期时间
实现步骤
- 打开你的Google表格,点击顶部菜单栏的扩展程序 > Apps 脚本
- 删除脚本编辑器里的默认代码,粘贴以下代码(注意根据你的实际列号调整变量):
function onEdit(e) { // 定义工作表对象 const toolSheet = e.source.getSheetByName('Tool List'); const faultSheet = e.source.getSheetByName('Fault List'); if (!toolSheet || !faultSheet) return; // 定义列号(根据你的实际表格调整:工具名称列、状态列) const toolNameCol = 1; // A列 const statusCol = 4; // D列 const editedRange = e.range; // 判断是否编辑的是状态列 if (editedRange.getColumn() !== statusCol) return; const toolName = toolSheet.getRange(editedRange.getRow(), toolNameCol).getValue(); const oldStatus = e.oldValue; const newStatus = editedRange.getValue(); const now = new Date(); // 处理故障标记:从非faulty改为faulty if (!oldStatus || oldStatus !== 'faulty' && newStatus === 'faulty') { // 在Fault List末尾新增记录 faultSheet.appendRow([toolName, now, '']); } // 处理恢复标记:从faulty改为okay if (oldStatus === 'faulty' && newStatus === 'okay') { // 查找该工具最后一条未恢复的故障记录 const data = faultSheet.getDataRange().getValues(); for (let i = data.length - 1; i >= 0; i--) { if (data[i][0] === toolName && data[i][2] === '') { // 填充恢复时间 faultSheet.getRange(i + 1, 3).setValue(now); break; } } } }
- 点击脚本编辑器顶部的保存按钮,给脚本命名(比如
ToolFaultTracker) - 设置触发器:
- 点击左侧菜单栏的时钟图标(触发器)
- 点击添加触发器
- 配置选项:
- 选择函数:
onEdit - 选择事件源:从电子表格
- 选择事件类型:编辑时
- 选择函数:
- 点击保存,授权脚本访问你的表格数据
注意事项
- 确认Fault List的表头已经设置:A列=工具名称,B列=故障时间,C列=恢复时间
- 调整代码中的
toolNameCol和statusCol变量,对应你表格中实际的列号(A列=1,B列=2,以此类推) - 状态值必须严格匹配
faulty和okay(大小写一致),如果你的状态文本有差异,修改代码中的对应字符串
内容的提问来源于stack exchange,提问作者Eren Demirtaş
相关产品推荐
相关产品推荐

