请求编写Google Sheets脚本:自动合并表单提交数据至主数据
Google Sheet 自动合并表单提交数据脚本方案
核心逻辑
针对关联Google Form的Sheet,每次有新提交时,提取该行的多组重复字段,拆分成单独行后追加到指定的主数据表格中。
完整脚本代码
function onFormSubmit(e) { // 配置参数:根据你的表格结构修改 const sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("表单提交"); // 表单响应表名 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("主数据"); // 目标主数据表名 const groupCount = 3; // 每组数据的列数(比如姓名+电话+邮箱=3列) const startColumn = 2; // 第一组数据的起始列号(从1开始计数) // 获取新提交的行数据 const newRow = e.range.getValues()[0]; // 遍历每组数据,拆分并整理 for (let i = 0; i < newRow.length / groupCount; i++) { const startIndex = startColumn - 1 + i * groupCount; const groupData = newRow.slice(startIndex, startIndex + groupCount); // 跳过空数据组(如果表单中某组未填写) if (groupData.every(cell => cell === "")) continue; // 追加到主数据表 targetSheet.appendRow(groupData); } }
脚本配置说明
- 修改
sourceSheet和targetSheet的表名,匹配你的实际表格名称 groupCount设置每组数据的列数(比如你原始表中每组是3列,就设为3)startColumn设置第一组数据的起始列(比如从B列开始,就设为2)
设置自动触发
- 打开Google Sheet,点击顶部菜单栏「扩展程序」→「Apps脚本」
- 将上述代码粘贴到脚本编辑器,保存并命名项目
- 点击编辑器左侧「触发器」图标(闹钟形状)
- 点击「添加触发器」,配置如下:
- 选择要运行的函数:
onFormSubmit - 选择部署来源:「Head」
- 选择事件来源:「从电子表格」
- 选择事件类型:「表单提交」
- 选择要运行的函数:
- 保存并授权所需权限
常见问题处理
- 如果脚本报错,先检查表名、列数配置是否正确
- 确保表单提交的行数据结构和你设置的
groupCount匹配 - 授权时如果出现权限提示,选择「高级」→「前往项目名称(不安全)」完成授权
内容的提问来源于stack exchange,提问作者Arjay Aquino
相关产品推荐
相关产品推荐

