You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:18:22