Google Sheets脚本开发请求:匹配BO_BENE_ID同步指定列数据
Google Sheets 匹配复制脚本实现方案
脚本代码实现
function matchAndCopyData() { // 获取当前电子表格 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 获取SOURCE和TARGET工作表 const sourceSheet = ss.getSheetByName("SOURCE"); const targetSheet = ss.getSheetByName("TARGET"); // 读取SOURCE中的目标数据列 const sourceData = sourceSheet.getRange("A2:N106761").getValues(); // 创建ID与对应数据的映射表,提升匹配效率 const sourceMap = {}; sourceData.forEach(row => { const id = row[0]; // A列对应数组索引0 if (id) { // 跳过空ID行 sourceMap[id] = { birthDate: row[9], // J列对应数组索引9 firstName: row[11], // L列对应数组索引11 lastName: row[13] // N列对应数组索引13 }; } }); // 读取TARGET的目标数据范围 const targetRange = targetSheet.getRange("A2:G2392"); const targetData = targetRange.getValues(); // 遍历TARGET数据,匹配并填充内容 targetData.forEach(row => { const id = row[0]; if (id && sourceMap[id]) { row[4] = sourceMap[id].birthDate; // E列对应数组索引4 row[5] = sourceMap[id].firstName; // F列对应数组索引5 row[6] = sourceMap[id].lastName; // G列对应数组索引6 } }); // 将更新后的数据写回TARGET工作表 targetRange.setValues(targetData); SpreadsheetApp.getUi().alert("数据匹配复制完成!"); }
使用步骤
- 打开目标Google Sheets文档
- 点击顶部菜单栏「扩展程序」→「Apps Script」
- 删除脚本编辑器内的默认代码,粘贴上述脚本
- 点击工具栏保存按钮,为脚本命名(例如
MatchCopyData) - 首次运行会触发权限请求,按提示完成授权(仅访问当前表格,安全可靠)
- 授权完成后再次点击运行,等待脚本执行结束
关键说明
- 采用映射表存储SOURCE数据,避免逐行比对的低效问题,适配10万量级的SOURCE数据
- 自动跳过空ID行,避免无效匹配
- 列索引对应规则:Google Sheets列从A开始对应数组索引0,例如A列=0、J列=9,以此类推
- 若后续数据范围变动,只需修改
getRange中的单元格范围(比如TARGET行数超过2392,可改为A2:G)
内容的提问来源于stack exchange,提问作者RLCastillo
相关产品推荐
相关产品推荐

