如何使用代码将Google表单回复自动同步到Sheets对应日期工作表
Google表单提交自动同步到对应日期工作表解决方案
直接使用Google Sheets绑定的Google Apps Script即可实现全自动同步,无需手动操作,具体步骤如下:
操作步骤
前置准备
确认所有日期工作表的表头与表单响应默认存储的总工作表(通常命名为「表单回应 1」)表头完全一致,同时日期工作表的名称必须和表单中提供的日期选项完全匹配(包括空格、日期格式都不能有差异)。打开脚本编辑器
打开绑定了表单的Google Sheets,点击顶部菜单栏「扩展程序」→「Apps 脚本」,删除编辑器中默认的空白代码,粘贴下方代码:
// 表单提交时触发的函数 function onFormSubmit(e) { // 配置项:请根据自己的表格修改以下参数 const DATE_COLUMN_INDEX = 2; // 报名日期字段在总表中的列索引,A列是0,B列是1,以此类推 const DATE_SEPARATOR = ", "; // 多选日期的分隔符,根据表单实际设置修改,比如是逗号、顿号等 const RESPONSE_SHEET_NAME = "表单回应 1"; // 存储所有表单提交数据的总表名称 // 获取总表和最新提交的行数据 const ss = SpreadsheetApp.getActiveSpreadsheet(); const responseSheet = ss.getSheetByName(RESPONSE_SHEET_NAME); const latestRow = responseSheet.getLastRow(); const latestData = responseSheet.getRange(latestRow, 1, 1, responseSheet.getLastColumn()).getValues()[0]; // 提取用户选择的所有报名日期 const selectedDates = latestData[DATE_COLUMN_INDEX].split(DATE_SEPARATOR).map(date => date.trim()); // 遍历每个日期,同步到对应工作表 selectedDates.forEach(date => { const targetSheet = ss.getSheetByName(date); // 只在对应日期工作表存在时插入数据 if (targetSheet) { targetSheet.appendRow(latestData); } }); }
- 配置触发规则
在Apps Script编辑器左侧点击「触发器」(闹钟形状图标),点击「添加触发器」,按以下参数配置:
- 选择要运行的函数:
onFormSubmit - 选择部署版本:
表头 - 选择事件来源:
电子表格 - 选择事件类型:
表单提交时
保存后按照页面提示完成权限授权即可,遇到Google「未验证应用」提示时,点击「高级」→「前往[你的项目名称]」即可继续授权。
- 功能验证
提交一条测试表单数据,选择1个或多个报名日期,查看对应日期工作表是否自动新增了提交数据即可。
可选优化项
- 如需避免重复插入数据,可以在代码中增加提交时间、用户邮箱的唯一性校验逻辑
- 如需批量处理历史提交的表单数据,可以补充单独的历史数据遍历函数批量执行
- 如果需要删除总表数据时同步删除对应日期工作表的数据,可以额外添加 onChange 触发器实现对应逻辑
内容的提问来源于stack exchange,提问作者Cali
相关产品推荐
相关产品推荐

