如何使用Apps Script匹配并导入谷歌表格跨工作表的数据
Google Sheets 匹配数据自动同步Apps Script实现方案
核心脚本代码
直接复制以下代码到Apps Script编辑器即可:
function syncSheetData() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sourceSheet = ss.getSheetByName('Sheet1'); // 数据源表 const targetSheet = ss.getSheetByName('Sheet2'); // 目标同步表 // 读取源表所有数据,构建匹配映射 const sourceValues = sourceSheet.getDataRange().getValues(); const matchMap = new Map(); // 这里默认源表第一列为匹配关键字,可根据实际需求调整列索引 sourceValues.forEach(row => { const matchKey = row[0]?.toString().trim(); if (matchKey) { matchMap.set(matchKey, row.slice(1)); // 存储关键字对应的其他列内容 } }); // 读取目标表数据,匹配填充 const targetValues = targetSheet.getDataRange().getValues(); const updatedValues = targetValues.map(row => { const currentKey = row[0]?.toString().trim(); if (currentKey && matchMap.has(currentKey)) { // 保留目标表第一列,后续列填充源表匹配到的内容,可根据需求调整填充范围 return [row[0], ...matchMap.get(currentKey)]; } return row; }); // 写入更新后的数据到目标表 targetSheet.getRange(1, 1, updatedValues.length, updatedValues[0].length).setValues(updatedValues); }
配置自动更新触发器
要实现数据持续自动同步,按以下步骤设置触发器即可:
- 打开目标表格,点击顶部「扩展程序」-「Apps Script」进入脚本编辑页,粘贴上述代码后保存项目
- 点击编辑页左侧闹钟形状的「触发器」按钮,点击右下角「添加触发器」
- 触发函数选择
syncSheetData,事件源选择「电子表格」,事件类型选择「更改」,保存后每次表格内容有变动就会自动同步匹配数据 - 若需要定时同步,可将事件源改为「时间驱动」,自行设置同步的时间频率即可
注意事项
- 代码默认两个表的匹配字段都在第一列,若你的匹配字段在其他列,修改
row[0]的索引即可(列从左到右索引从0开始计数) - 若不需要覆盖目标表原有其他列的内容,可自行调整写入的范围,只更新需要同步的列
- 首次运行脚本需要按照提示完成权限授权,授权后即可正常使用
内容的提问来源于stack exchange,提问作者Victoria
相关产品推荐
相关产品推荐

