将Google Form响应指定列自动同步至多个独立Spreadsheet
实现Google表单响应主表到两个独立表格的特定列自动同步
核心方案
通过Google Apps Script的表单提交触发器,在员工提交表单后自动从主响应表提取指定列数据,同步到客户时间表和员工时间表这两个独立Spreadsheet。
步骤与代码实现
打开主Spreadsheet的脚本编辑器
打开存储所有表单响应的主表,点击顶部菜单「工具」→「脚本编辑器」。替换并保存脚本
将以下代码粘贴到编辑器中,替换代码中的ID和工作表名称为你的实际信息:function syncToOtherSheets(e) { try { // 配置主表信息 const mainSheetId = "你的主Spreadsheet ID"; // 从主表URL中提取(URL中/d/和/edit之间的字符串) const mainResponseSheet = SpreadsheetApp.openById(mainSheetId).getSheetByName("表单响应 1"); // 替换为你的表单响应工作表名称 // 配置目标表格信息 const clientSheetId = "客户时间表的Spreadsheet ID"; const clientTargetSheet = SpreadsheetApp.openById(clientSheetId).getSheetByName("Sheet1"); // 替换为客户表的目标工作表名称 const employeeSheetId = "员工时间表的Spreadsheet ID"; const employeeTargetSheet = SpreadsheetApp.openById(employeeSheetId).getSheetByName("Sheet1"); // 替换为员工表的目标工作表名称 // 提取需要同步的列:timestamp(索引0)、initials(索引1)、活动描述(索引2) // 注意:列索引从0开始,A列对应0,B列对应1,以此类推,根据你的实际列位置调整 const submittedData = e.values; const syncData = [submittedData[0], submittedData[1], submittedData[2]]; // 写入目标表格 clientTargetSheet.appendRow(syncData); employeeTargetSheet.appendRow(syncData); } catch (err) { // 可选:出错时发送邮件提醒(替换为你的邮箱) MailApp.sendEmail("你的邮箱地址", "时间表同步脚本异常", `错误信息:${err.toString()}`); } }设置表单提交触发器
- 点击脚本编辑器左侧的「触发器」图标(闹钟样式)
- 点击「添加触发器」,按以下配置设置:
- 选择函数:
syncToOtherSheets - 选择事件源:「从表单提交」
- 选择事件类型:「表单提交」
- 选择函数:
- 保存并完成授权流程(首次运行会要求授权,按提示操作即可)
关键注意事项
- 权限与授权:确保脚本获得了访问Spreadsheet的权限,授权过程中如果提示“未验证的应用”,可以点击「高级」→「转到XX脚本」继续授权。
- 列索引准确性:根据主表中timestamp、initials、活动描述所在的实际列调整索引(比如如果活动描述在D列,索引改为3)。
- 工作表名称匹配:目标表格的工作表名称要和代码中的一致,避免找不到工作表导致同步失败。
- 兼容现有脚本:该触发器仅在表单提交时触发,不会干扰主表其他标签页的自动日期脚本。
内容的提问来源于stack exchange,提问作者Cindi W
相关产品推荐
相关产品推荐

