Google Sheets onEdit替代方案:脚本修改单元格时触发复制
解决Google Sheets脚本自动修改单元格不触发onEdit的问题
方案1:在CopyAanvraag脚本中直接调用目标函数
既然CopyAanvraag是自动设置AK列为"OK"的源头,最直接的方式是在设置完单元格值后,直接调用你已实现的push2AANVRAAG逻辑,无需依赖触发器。
你可以重构现有代码,让复制逻辑支持直接接收行号参数:
function CopyAanvraag() { const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Formulierreacties 1'); // 替换为你实际获取目标行的逻辑 const targetRow = 5; // 设置AK列为"OK" sourceSheet.getRange(targetRow, 37).setValue('OK'); // 直接调用复制函数 push2AANVRAAGForRow(targetRow); } // 重构原push2AANVRAAG,支持通过行号直接执行复制 function push2AANVRAAGForRow(row) { const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Formulierreacties 1'); const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Aanvragen'); // 替换为你实际需要复制的单元格范围 const dataToCopy = sourceSheet.getRange(row, 1, 1, 36).getValues(); targetSheet.appendRow(dataToCopy[0]); }
方案2:使用可安装的onChange触发器
如果需要监控所有修改AK列的操作(包括手动和脚本),可以改用可安装的onChange触发器,它能响应脚本对单元格的修改:
- 编写变更处理函数:
function onChangeHandler(e) { // 仅处理编辑类型的变更 if (e.changeType !== 'EDIT') return; const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Formulierreacties 1'); const changedRange = sourceSheet.getRange(e.range.rowStart, e.range.columnStart); // 检查是否是AK列(第37列)且值为"OK" if (changedRange.getColumn() === 37 && changedRange.getValue() === 'OK') { // 调用你的复制逻辑,可直接用原push2AANVRAAG或重构后的函数 push2AANVRAAGForRow(e.range.rowStart); } }
- 创建可安装触发器:
- 打开脚本编辑器,点击左侧「触发器」图标
- 点击「添加触发器」
- 选择函数:
onChangeHandler - 事件源选「电子表格」,事件类型选「变更」
- 保存完成配置
方案3:整合逻辑,取消单元格状态依赖
如果业务允许,可以直接在CopyAanvraag中完成数据复制,跳过设置AK列再触发的中间步骤:
function CopyAanvraag() { const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Formulierreacties 1'); const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Aanvragen'); // 替换为你实际获取目标行的逻辑 const targetRow = 5; // 先复制数据到目标表 const data = sourceSheet.getRange(targetRow, 1, 1, 36).getValues(); targetSheet.appendRow(data[0]); // 再设置AK列为"OK"记录状态 sourceSheet.getRange(targetRow, 37).setValue('OK'); }
内容的提问来源于stack exchange,提问作者Tine Kennis
相关产品推荐
相关产品推荐

