使用App Script根据其他列内容修改指定列值的问题
解决方案
修正后的代码
function onEdit(e) { // 仅通过表格编辑触发,手动运行会报错 if (!e) throw new Error("请通过编辑表格触发此函数,不要手动运行"); const sheet = e.source.getActiveSheet(); // 只处理名为'Sheet8'的工作表 if (sheet.getName() !== 'Sheet8') return; const editedCol = e.range.getColumn(); const editedRow = e.range.getRow(); // 仅监控B列(2)和C列(3)的编辑,跳过表头行 if ((editedCol !== 2 && editedCol !== 3) || editedRow <= 1) return; // 获取当前行B、C列的值 const bValue = sheet.getRange(editedRow, 2).getValue(); const cValue = sheet.getRange(editedRow, 3).getValue(); // 任意一列是'Rejected'时,将A列设为'Inactive' if (bValue === 'Rejected' || cValue === 'Rejected') { sheet.getRange(editedRow, 1).setValue('Inactive'); } }
代码说明
- 用
onEdit简单触发器,表格编辑时自动触发,无需额外配置 - 限定仅处理'Sheet8',避免影响其他工作表
- 只监控B、C列的编辑操作,跳过表头行(行1)
- 检查当前行的B、C列值,只要其中一个为'Rejected',就同步修改对应行的A列状态
- 保留员工编辑A列的权限:仅当B/C列触发条件时才自动修改A列,其余场景员工可自由编辑A列内容
原代码问题分析
- 仅监控了B列,未覆盖C列的编辑场景
- 依赖
getActiveCell(),仅能处理当前选中的单个单元格,批量编辑时无法触发逻辑 - 未限定工作表范围,编辑其他工作表时也会执行代码
内容的提问来源于stack exchange,提问作者Sehal Hasan
相关产品推荐
相关产品推荐

