如何用Google Script按标题匹配汇总同模板多副本Google Sheets数据?
批量汇总同模板Google Sheets数据的实现方案
这需求太实用了!用Google Script完全可以高效搞定,核心就是通过标题匹配自动筛选目标表格,再批量拉取数据合并到汇总表。下面是具体的实现步骤和代码:
步骤1:准备汇总表格
先建一个新的Google Sheets作为汇总表(比如叫「人员信息对比汇总」),表头要和你的模板表格完全一致,建议额外加一列「来源表格名称」,方便后续追踪每条数据的出处。
步骤2:编写Google Script代码
打开汇总表的脚本编辑器(菜单栏「扩展程序」→「Apps Script」),替换默认代码为以下内容:
function batchAggregateData() { // 1. 自定义配置参数 const summarySheetName = "Sheet1"; // 汇总表的工作表名称(默认是Sheet1,按需修改) const titlePattern = /人员信息表-.*$/; // 匹配目标表格标题的正则,比如所有以「人员信息表-」开头的表格 const skipHeaderRows = 1; // 模板表格的表头行数,一般是1,读取时跳过避免重复 // 2. 获取汇总表对象 const summarySpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const summarySheet = summarySpreadsheet.getSheetByName(summarySheetName); if (!summarySheet) { SpreadsheetApp.getUi().alert(`找不到名为${summarySheetName}的工作表,请检查名称!`); return; } // 3. 搜索Drive中符合标题规则的Google Sheets const files = DriveApp.searchFiles( `mimeType='application/vnd.google-apps.spreadsheet' and title matches '${titlePattern.source}'` ); // 4. 遍历表格并导入数据 let totalRowsAdded = 0; while (files.hasNext()) { const file = files.next(); try { // 打开目标表格 const targetSpreadsheet = SpreadsheetApp.open(file); const targetSheet = targetSpreadsheet.getSheets()[0]; // 默认取第一个工作表,可按需修改 // 提取数据(跳过表头) const allData = targetSheet.getDataRange().getValues(); const dataToAppend = allData.slice(skipHeaderRows); // 跳过表头行 if (dataToAppend.length === 0) { console.log(`表格「${file.getName()}」无有效数据`); continue; } // 给每行数据加上来源表格名称 dataToAppend.forEach(row => row.push(file.getName())); // 写入汇总表 summarySheet.getRange(summarySheet.getLastRow() + 1, 1, dataToAppend.length, dataToAppend[0].length) .setValues(dataToAppend); totalRowsAdded += dataToAppend.length; console.log(`成功导入「${file.getName()}」的${dataToAppend.length}行数据`); } catch (e) { console.error(`处理「${file.getName()}」出错:${e.message}`); SpreadsheetApp.getUi().alert(`处理「${file.getName()}」时出错:${e.message}`); } } // 完成提示 SpreadsheetApp.getUi().alert(`批量汇总完成!共导入${totalRowsAdded}行数据`); }
代码关键说明:
- 标题匹配:用
DriveApp.searchFiles结合正则表达式筛选表格,你可以根据实际标题修改titlePattern(比如标题包含「人员信息」就改成/人员信息/)。 - 数据处理:自动跳过模板的表头行,避免汇总表重复出现表头;同时给每行数据加上来源表格名称,方便后续对比分析。
- 错误处理:捕获权限不足或表格异常的情况,给出提示,避免脚本中途崩溃。
步骤3:运行并授权脚本
- 点击脚本编辑器的运行按钮(▶️),首次运行会要求授权,按照提示完成权限验证(需要允许脚本访问你的Drive和Sheets)。
- 运行完成后,回到汇总表就能看到所有匹配表格的数据已经合并进来了。
进阶优化建议
- 定时自动更新:如果需要定期汇总,可在脚本编辑器左侧点击「触发器」,设置每天/每周自动运行脚本。
- 指定文件夹范围:如果目标表格都在同一个文件夹,可修改搜索条件加上
and '文件夹ID' in parents,缩小搜索范围提升效率。 - 数据去重:若担心重复导入,可在汇总表加唯一标识列(比如人员ID),导入前先检查是否已存在该数据。
内容的提问来源于stack exchange,提问作者Samantha Garcia




