Google Sheets同一工作表使用两个onEdit()函数仅单一生效求助
问题根因
Google Sheets的onEdit简单触发器仅会自动识别调用名称严格为onEdit的函数,你单独定义的onEdit2不会被编辑事件触发,这是合并后逻辑无法全部生效的核心原因。
修复后可用代码
将两个逻辑合并到同一个onEdit函数中即可,同时优化了重复校验逻辑,修正了原代码中逻辑运算符优先级的隐患:
function onEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var activeSheet = event.source.getActiveSheet(); var editRange = event.source.getActiveRange(); // 公共前置校验:仅处理General Maintenance表第9列的编辑操作 if(activeSheet.getName() !== "General Maintenance" || editRange.getColumn() !== 9) { return; } var currentStatus = editRange.getValue(); var editRow = editRange.getRow(); var totalColumns = activeSheet.getLastColumn(); var targetSheet = null; // 按状态匹配目标标签页 if(currentStatus === "Resolved") { targetSheet = ss.getSheetByName("Completed"); } else if(currentStatus === "On Hold" || currentStatus === "Waiting On Feedback") { targetSheet = ss.getSheetByName("On Hold / Awaiting Feedback"); } // 匹配到目标页后执行移动逻辑 if(targetSheet) { var targetPosition = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); activeSheet.getRange(editRow, 1, 1, totalColumns).moveTo(targetPosition); activeSheet.deleteRow(editRow); } }
部署说明
删除你原有代码中的两个onEdit、onEdit2函数,仅保留上述一个onEdit函数保存即可生效。后续如需新增其他状态的移动规则,直接在状态判断分支中新增对应配置即可。
内容的提问来源于stack exchange,提问作者Rookie_In_Training
相关产品推荐
相关产品推荐

