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

使用App Script实现表单提交后将对应答案合并至同一列

解决Google Sheets表单响应列合并与跨表迁移问题

问题说明

表单提交后,需将Responses工作表中Eng1与FR1、Eng2与FR2的内容按内容+内容格式合并,合并后列名设为Eng1&FR1、Eng2&FR2,并将处理后的数据迁移至New工作表,同时删除原Responses表中的对应行,要求全程用脚本实现,不使用公式。

原脚本问题分析

原onEdit脚本存在两个核心问题:

  • 触发条件错误:依赖A列单元格变为空值触发,不符合表单提交后的自动处理逻辑
  • 未实现列合并:仅直接移动单元格范围,未对Eng/FR列内容进行合并处理

修正后的脚本实现

使用onFormSubmit触发器(表单提交专用触发),实现自动合并与迁移:

function onFormSubmit(e) {
  // 获取表单响应工作表和目标工作表
  const responseSheet = e.source.getSheetByName("Responses");
  const targetSheet = e.source.getSheetByName("New");
  
  // 获取当前提交行的全部数据
  const rowValues = e.range.getValues()[0];
  // 提取对应列数据(注意:数组索引从0开始,需根据实际列位置调整序号)
  const columnA = rowValues[0];
  const eng1 = rowValues[1];
  const fr1 = rowValues[2];
  const eng2 = rowValues[3];
  const fr2 = rowValues[4];
  
  // 按要求合并列内容
  const engFr1 = `${eng1}+${fr1}`;
  const engFr2 = `${eng2}+${fr2}`;
  
  // 准备写入目标表的数据行
  const targetRow = [columnA, engFr1, engFr2];
  
  // 将数据追加到目标表末尾
  targetSheet.appendRow(targetRow);
  
  // 删除响应表中的原提交行
  responseSheet.deleteRow(e.range.rowStart);
}

脚本配置步骤

  1. 打开目标Google Sheets文档,点击菜单栏扩展程序 > Apps 脚本
  2. 替换原脚本为上述代码,保存项目(可命名为FormResponseMerge)
  3. 在脚本编辑器左侧点击触发器图标(时钟形状),选择添加触发器
  4. 按如下配置:
    • 运行函数:onFormSubmit
    • 事件源:表单提交
    • 事件类型:来自表单 > 表单提交
  5. 点击保存,完成权限授权

效果验证

原Responses表数据:

Column AEng1FR1Eng2FR2
row 1engfrengfr
row 2engrfengrf

表单提交后,New表自动生成:

Column AEng1&FR1Eng2&FR2
row 1eng+freng+fr
row 2eng+rfeng+rf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:45:38