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

求助:Google Sheets脚本失效——编辑H列无法自动生成D列递增编号

修复Google Sheets自动生成递增编号脚本的问题

原脚本的核心问题

  1. 缺少onEdit(e)函数定义,导致脚本完全无法触发执行
  2. 逻辑错误:错误地取当前行D列的值递增,而非需求要求的上一行D列编号+1
  3. 未处理空值/无效编号的边界情况,容易触发报错导致脚本终止

修正后的完整脚本

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  var editedRange = e.range;

  // 校验编辑范围:指定工作表、H列、非表头行
  if (
    sheet.getName() === "Job Card SumSheet" &&
    editedRange.getColumn() === 8 && // 对应H列
    editedRange.getRow() > 1
  ) {
    var editedRow = editedRange.getRow();
    var prevRow = editedRow - 1;
    var prevDocNo = sheet.getRange(prevRow, 4).getValue().trim(); // 获取上一行D列的编号

    var nextDocNo;
    // 处理边界情况:上一行无有效编号(比如表头行或空值)
    if (!prevDocNo || !prevDocNo.match(/^WFE JC\d+$/)) {
      nextDocNo = "WFE JC401"; // 生成初始编号
    } else {
      // 提取数字部分并递增
      var numericPart = parseInt(prevDocNo.match(/\d+/)[0], 10);
      nextDocNo = prevDocNo.replace(/\d+/, numericPart + 1);
    }

    // 设置当前行D列的编号
    sheet.getRange(editedRow, 4).setValue(nextDocNo);
  }
}

关键修正说明

  • 补全onEdit(e)函数壳,确保Google Sheets的简单触发器能正常触发
  • 调整逻辑为读取上一行D列的编号来生成新编号,完全匹配需求
  • 增加边界判断:当编辑的是第2行(第一行数据)时,自动生成初始编号WFE JC401;如果上一行编号格式无效,也会 fallback 到初始值
  • 增加trim()处理空字符,避免单元格空格干扰正则匹配
  • 给parseInt指定10进制,防止数字以0开头时被错误解析为八进制

使用注意事项

  • 直接将原脚本替换为上述代码即可,无需额外安装触发器(简单触发器会自动生效)
  • 若需要调整初始编号的起始值,直接修改代码中的"WFE JC401"即可
  • 确保编辑的是H列的非表头行,脚本才会触发

内容的提问来源于stack exchange,提问作者Robert Burger

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:57:38