如何让Google Form回复同时同步至原Google Sheet及主Google Sheet?
实现Google Form回复同步到两个Google Sheet的方案
方案1:使用Google Apps Script实现实时同步(推荐)
这是最灵活且可靠的方案,通过表单提交触发器自动将新回复同步到目标Sheet。
步骤如下:
- 打开与Google Form关联的原始Sheet,点击顶部菜单栏的「扩展程序」→「Apps脚本」,打开脚本编辑器。
- 删除默认的
myFunction,粘贴以下代码(根据实际情况修改目标Sheet的ID和名称):
function onFormSubmit(e) { // 获取表单提交的响应数据 const responseData = e.values; // 目标主Sheet的ID(可从主Sheet的URL中提取,格式为https://docs.google.com/spreadsheets/d/[SheetID]/edit) const targetSheetId = "替换为你的主Sheet ID"; // 目标主Sheet中存放回复的工作表名称(比如"表单回复1") const targetSheetName = "替换为目标工作表名称"; try { // 打开目标Sheet并获取指定工作表 const targetSpreadsheet = SpreadsheetApp.openById(targetSheetId); const targetSheet = targetSpreadsheet.getSheetByName(targetSheetName); // 将新回复追加到目标Sheet的最后一行 targetSheet.appendRow(responseData); } catch (error) { // 捕获错误并记录(可在脚本编辑器的「查看」→「日志」中查看) console.error("同步失败:" + error.message); } }
- 设置触发器:
- 在脚本编辑器左侧点击「触发器」图标(时钟形状),点击「添加触发器」。
- 配置选项:
- 选择要运行的函数:
onFormSubmit - 选择部署类型:「Head」
- 选择事件源:「表单提交」
- 选择事件类型:「来自表单」
- 选择要运行的函数:
- 点击「保存」,按提示完成授权(需要允许脚本访问你的Google Sheets数据)。
- 测试:提交一条表单测试回复,检查两个Sheet是否都同步了新数据。
注意事项:
- 确保原始Sheet和主Sheet的列顺序与表单字段顺序一致,否则数据会错位;如果列顺序不同,可修改代码中的
responseData,手动指定要同步的字段(比如[responseData[0], responseData[2]]只同步第1和第3列数据)。 - 脚本授权后,只要表单有新提交,就会自动触发同步,无需手动操作。
方案2:使用IMPORTRANGE函数实现单向同步(适合只读场景)
如果主Sheet仅需要查看表单回复,不需要编辑,可以使用IMPORTRANGE函数直接导入原始Sheet的数据:
- 打开主Sheet,在要存放数据的第一个单元格(比如A1)中输入:
=IMPORTRANGE("原始Sheet的ID", "表单回复1!A:Z")
- 首次使用会提示「需要权限连接这些表格」,点击「允许访问」即可。
局限性:
- 数据是只读的,无法在主Sheet中修改同步过来的表单回复;
- 同步存在一定延迟(通常几分钟内),无法做到实时同步;
- 如果原始Sheet的结构(比如列数、列顺序)发生变化,需要手动调整函数参数。
内容的提问来源于stack exchange,提问作者Megan Verholy
相关产品推荐
相关产品推荐

