多份Google Form新响应汇总至单个Spreadsheet工作表及importrange使用咨询
多Google Form响应汇总与通知解决方案
一、用IMPORTRANGE批量汇总(快速上手)
IMPORTRANGE可以直接跨表格拉取数据,给每个表单的响应表单独配置公式,同时手动添加来源标记:
- 打开新建的汇总Spreadsheet,假设工作表名为「总响应表」。
- 针对第一份表单的响应表,在A2单元格输入:
首次使用会弹出授权提示,点击「允许访问」即可拉取数据。=IMPORTRANGE("你的第一份响应表URL", "表单响应1!A2:Z") - 在旁边空白列(比如AA列)的AA2单元格输入:
这会自动给该表单的所有响应行打上来源标记。=ARRAYFORMULA(IF(A2:A<>"", "表单1名称(或响应表名称)", "")) - 第二份表单同理,在第一份数据的下方空白行(比如A1000,根据实际行数调整)输入对应的IMPORTRANGE公式,旁边列标记另一个来源名称,以此类推。
二、用Google Apps Script自动同步(实时性更强)
如果公式拉取有延迟,或者想要自动更新,用脚本更灵活:
- 打开汇总Spreadsheet,点击「扩展程序」→「Apps脚本」进入脚本编辑器。
- 替换默认代码为以下内容,记得修改
responseSheetList里的响应表ID和来源名称:function syncAllFormResponses() { // 目标汇总工作表 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("总响应表"); // 配置需要同步的响应表:ID + 来源标记 const responseSheetList = [ {sheetId: "XXX1", sourceName: "客户反馈表单"}, {sheetId: "XXX2", sourceName: "员工入职表单"}, // 可继续添加更多表单配置 ]; responseSheetList.forEach(item => { // 打开对应响应表 const sourceSpreadsheet = SpreadsheetApp.openById(item.sheetId); const sourceSheet = sourceSpreadsheet.getSheetByName("表单响应1"); // 获取响应数据(跳过表头,从第二行开始) const rawData = sourceSheet.getDataRange().offset(1, 0).getValues(); // 给每一行添加来源标记 const dataWithSource = rawData.map(row => [...row, item.sourceName]); // 过滤空行,追加到汇总表 const validRows = dataWithSource.filter(row => row.some(cell => cell !== "")); if (validRows.length > 0) { const nextRow = targetSheet.getLastRow() + 1; targetSheet.getRange(nextRow, 1, validRows.length, validRows[0].length).setValues(validRows); } }); } - 点击「运行」按钮授权脚本权限,之后设置定时触发器:左侧菜单选「触发器」→「添加触发器」,选择
syncAllFormResponses函数,事件源选「时间驱动」,根据需求设置运行频率(比如每小时一次)。
三、搭配新响应通知
不用每天查表格,给每个表单单独设置邮件通知:
- 打开对应Google Form,切换到「响应」标签,点击右上角的三个点图标,选择「获取电子邮件通知」,有新响应时会直接收到邮件提醒。
内容的提问来源于stack exchange,提问作者Ellen
相关产品推荐
相关产品推荐

