Google Apps Script求助:蓝牙卡尺自动测量填表功能完善
蓝牙卡尺测量值自动校验脚本方案
核心实现逻辑
- 用
onEdit(e)触发器监听单元格编辑,仅处理测量区域内的输入 - 从命名范围
Frontier_1和Frontier_2读取对应项目的上下限,统一处理大小顺序避免判断错误 - 校验测量值后自动设置单元格底色,完成最后一项后弹出提示
完整代码
function onEdit(e) { const sheet = e.source.getActiveSheet(); const editedCell = e.range; const row = editedCell.getRow(); const col = editedCell.getColumn(); // 配置测量区域:假设测量值从A2开始,共6行(A2-A7) const startRow = 2; const endRow = 7; const targetCol = 1; // 过滤无关操作 if (col !== targetCol || row < startRow || row > endRow) return; // 获取当前项目的上下限 const frontier1 = sheet.getRangeByName("Frontier_1").getCell(row - startRow + 1, 1).getValue(); const frontier2 = sheet.getRangeByName("Frontier_2").getCell(row - startRow + 1, 1).getValue(); const lower = Math.min(frontier1, frontier2); const upper = Math.max(frontier1, frontier2); const value = editedCell.getValue(); // 设置单元格颜色 if (value >= lower && value <= upper) { editedCell.setBackground("#b7e1cd"); // 合格绿 } else { editedCell.setBackground("#f8cbad"); // 不合格红 } // 最后一项完成后弹窗提示 if (row === endRow) { SpreadsheetApp.getUi().alert("6项测量已全部完成!"); } }
关键说明
- 区域配置:可根据实际表格修改
startRow、endRow和targetCol,对应测量值所在的单元格范围 - 上下限兼容:用
Math.min/Math.max处理Frontier_1和Frontier_2的顺序问题,无需纠结哪个是上限哪个是下限 - 数据格式:确保蓝牙卡尺输入的是数字,若为文本可修改为
const value = Number(editedCell.getValue())转换 - 权限授权:首次运行脚本需完成权限授权,确保
onEdit触发器正常生效
内容的提问来源于stack exchange,提问作者user14155947
相关产品推荐
相关产品推荐

