Google Sheets中实现编辑D9时同步C9与D9数据至主表
解决编辑D9时同步C9和D9数据到目标工作表的问题
嘿,我明白你想要的效果啦——现在只要编辑D9,就能把C9和D9的内容同时同步到master inventory工作表里,不用再分别编辑两个单元格触发操作。咱们来调整一下你的代码就行:
修改后的完整代码
function onEdit(e) { // 仅当编辑的是D9单元格时执行后续逻辑 if (e.range.getA1Notation() === 'D9') { // 获取当前表格实例和对应的工作表 const ss = SpreadsheetApp.getActiveSpreadsheet(); const inputSheet = ss.getSheetByName("input"); const masterSheet = ss.getSheetByName("master inventory"); // 读取E9中记录的目标行号 let currentRow = inputSheet.getRange("E9").getValue(); // 获取C9和D9的当前值 const c9Value = inputSheet.getRange("C9").getValue(); const d9Value = e.range.getValue(); // 将C9的值写入master inventory的A列对应行(对应原代码的A3起始逻辑) masterSheet.getRange(`A${currentRow + 2}`).setValue(c9Value); // 将D9的值写入master inventory的B列对应行 masterSheet.getRange(`B${currentRow + 2}`).setValue(d9Value); // 清空D9内容(保留你原来的需求) e.range.clearContent(); // 更新E9的行号,为下一次写入做准备 inputSheet.getRange("E9").setValue(currentRow + 1); } }
关键修改说明
- 移除了监听C9编辑的分支,只保留D9作为唯一触发条件,这样只要编辑D9就会执行所有同步操作
- 新增了获取C9值的代码,把它和D9的值一起写入到
master inventory的A、B列对应行 - 把原来的
getCell写法改成了更直观的模板字符串A${currentRow + 2},对应你原代码中从A3开始的逻辑(如果E9初始值是1,第一次就会写入A3) - 保留了你原来的清空D9、更新E9行号的逻辑,确保流程和之前一致
测试小提示
- 先确保E9的初始值是1,这样第一次写入会对应到
master inventory的A3和B3 - 在
input表的C9填入内容,然后编辑D9,检查master inventory的对应行是否同时出现C9和D9的值 - 确认D9是否被清空,E9的数值是否自动加1
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

