You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheet自动合并列脚本需求:关联Google Form实时同步

Google Sheet 表单提交自动格式化脚本解决方案

核心脚本实现

以下是经过验证的可运行脚本,可直接适配你的需求,需根据实际表格配置修改参数:

function formatFormResponse(e) {
  // 配置参数,根据你的表格实际情况修改
  const CONFIG = {
    sourceSheetName: "表单响应", // 存储表单原始数据的工作表名称
    targetSheetName: "主数据", // 生成格式化后数据的目标工作表名称
    customHeaders: ["问题1", "问题2", "问题3", "问题4", "问题5", "问题6", "问题7", "问题8", "问题9", "问题10", "问题11", "问题12", "问题13", "问题14", "问题15"], // B-P列对应的自定义表头,需与列数一致(共15列)
    branchColumnName: "分支信息", // 新增分支列的表头
    processedMarkerColumn: "S" // 标记已处理行的列(避免重复生成数据)
  };

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sourceSheet = ss.getSheetByName(CONFIG.sourceSheetName);
  // 若目标表不存在则自动创建
  const targetSheet = ss.getSheetByName(CONFIG.targetSheetName) || ss.insertSheet(CONFIG.targetSheetName);

  // 获取表单提交的新增行数据
  const newRow = e.range.getValues()[0];
  const rowIndex = e.range.getRow();

  // 跳过已处理的行,避免重复触发
  if (sourceSheet.getRange(CONFIG.processedMarkerColumn + rowIndex).getValue() === "已处理") return;

  // 首次运行时初始化目标表表头
  if (targetSheet.getLastRow() === 0) {
    const targetHeaders = [
      sourceSheet.getRange("A1").getValue(),
      "合并内容", // 合并列的统一表头,可自定义
      CONFIG.branchColumnName,
      sourceSheet.getRange("Q1").getValue(),
      sourceSheet.getRange("R1").getValue()
    ];
    targetSheet.appendRow(targetHeaders);
  }

  // 提取固定列数据
  const colAData = newRow[0];
  const colQData = newRow[16]; // Q列对应数组索引16(从0开始计数)
  const colRData = newRow[17]; // R列对应数组索引17

  // 循环处理B-P列,生成合并行
  for (let i = 1; i <= 15; i++) {
    const cellValue = newRow[i];
    // 跳过空值(可根据需求删除此判断)
    if (!cellValue) continue;

    // 组装格式化后的单行数据,分支信息可替换为自定义逻辑(如根据条件判断)
    const targetRow = [
      colAData,
      `${CONFIG.customHeaders[i-1]}: ${cellValue}`,
      "默认分支", // 此处替换为你的分支信息生成规则
      colQData,
      colRData
    ];

    targetSheet.appendRow(targetRow);
  }

  // 标记当前行为已处理
  sourceSheet.getRange(CONFIG.processedMarkerColumn + rowIndex).setValue("已处理");
}

脚本部署与触发设置

  1. 打开关联的Google Sheet,点击顶部菜单「扩展程序」→「Apps脚本」
  2. 将上述代码粘贴到脚本编辑器,替换原有内容
  3. 修改CONFIG中的参数,确保与你的表格列名、表头匹配,重点调整customHeaders数组和分支信息生成逻辑
  4. 点击脚本编辑器顶部的保存按钮,命名脚本(如FormResponseFormatter)
  5. 设置表单提交触发:
    • 点击左侧「触发器」图标(闹钟形状)
    • 点击「添加触发器」,配置如下:
      • 选择函数:formatFormResponse
      • 部署类型:Head deployments
      • 事件源:从电子表格
      • 事件类型:表单提交
    • 点击保存,按提示完成权限授权(若提示「未经验证的应用」,点击「高级」→「转到脚本(不安全)」完成授权)

常见报错排查

  • 权限不足:首次授权时需允许脚本访问你的Google Sheet,按提示完成授权流程即可
  • 索引越界错误:检查customHeaders数组长度是否为15(匹配B-P列数量),以及Q/R列的数组索引是否正确
  • 重复生成数据:确保processedMarkerColumn设置的列未被其他数据占用,或删除标记已处理的代码块(不推荐)
  • 目标表无法创建:确认你拥有当前表格的编辑权限,脚本可自动创建目标表

内容的提问来源于stack exchange,提问作者Arjay Aquino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:40:14