Google Apps Script多目标表格对应不同工作表数据同步问题
Google Apps Script 数据同步代码修改
需求说明
我是Javascript和Google Apps Script新手,希望实现一个函数,将活动工作表(名称为January)中特定区域的数据同步到多个目标Google Sheets的指定工作表中。现有代码无报错,但未按对应关系同步,需调整为:
- 目标表格1对应工作表
cab1 - 目标表格2对应工作表
cab2 - 目标表格3对应工作表
cab3和cab4
现有代码
function myFunction2() { const spreadsheetIds = [ "1ShPxDW9qhz4aWgaQ1G9oz7w1yh0-Wfe2VItet95UYks", "13Dx3ZOpV7baSTadSApIrVVccN-bHrPlHu240Aux0fo0", "14EVlqaP1ilXwopgi0ESvp_IKkSyROSF22WzWAcNAJWc" ];// Please set your spreadshet IDs. const srcSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const srcSheet = srcSpreadsheet.getSheetByName("January"); if (!srcSheet) return; const values = srcSheet.getRange("A2:D32").getValues(); if (values.filter(r => r.join("")).length == 0) return; for (let i = 0; i < spreadsheetIds.length; i++) { const dstSpreadsheet = SpreadsheetApp.openById(spreadsheetIds[i]); const targetSheet = dstSpreadsheet.getSheetByName("cab1"); if (targetSheet) { targetSheet.getRange(targetSheet.getLastRow() + 1, 3, values.length, values[0].length).setValues(values); } } }
修改后代码
function myFunction2() { // 配置目标表格ID与对应需同步的工作表名 const targetConfigs = [ { spreadsheetId: "1ShPxDW9qhz4aWgaQ1G9oz7w1yh0-Wfe2VItet95UYks", targetSheets: ["cab1"] }, { spreadsheetId: "13Dx3ZOpV7baSTadSApIrVVccN-bHrPlHu240Aux0fo0", targetSheets: ["cab2"] }, { spreadsheetId: "14EVlqaP1ilXwopgi0ESvp_IKkSyROSF22WzWAcNAJWc", targetSheets: ["cab3", "cab4"] } ]; const srcSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const srcSheet = srcSpreadsheet.getSheetByName("January"); if (!srcSheet) return; const values = srcSheet.getRange("A2:D32").getValues(); if (values.filter(r => r.join("")).length == 0) return; // 遍历每个目标配置,同步数据到对应工作表 targetConfigs.forEach(config => { const dstSpreadsheet = SpreadsheetApp.openById(config.spreadsheetId); config.targetSheets.forEach(sheetName => { const targetSheet = dstSpreadsheet.getSheetByName(sheetName); if (targetSheet) { targetSheet.getRange(targetSheet.getLastRow() + 1, 3, values.length, values[0].length).setValues(values); } }); }); }
修改说明
- 将原单一的表格ID数组改为配置对象数组,明确每个目标表格对应的同步工作表,逻辑更清晰
- 新增双层遍历:先遍历每个目标表格配置,再遍历该表格下的所有目标工作表,实现一对多的同步需求
- 保留原有的空数据校验和工作表存在校验,避免无效操作
内容的提问来源于stack exchange,提问作者dra
相关产品推荐
相关产品推荐

