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

Google表单提交后自动按单元格值移行至指定工作表的脚本修改需求

解决Google表单提交后自动移动行到对应工作表的问题

以下是修改后的代码,适配Google表单提交触发场景,可自动将「表单响应」工作表的新提交行按第2列值移动到对应名称的工作表:

function onFormSubmitMoveRow(e) {
  // 获取触发事件的源工作表
  const sourceSheet = e.source.getSheetByName("表单响应");
  // 确保仅处理「表单响应」工作表的提交
  if (!sourceSheet || e.range.getSheet().getName() !== "表单响应") return;

  // 获取刚提交的行号和该行数据
  const row = e.range.getRow();
  const rowData = sourceSheet.getRange(row, 1, 1, sourceSheet.getLastColumn()).getValues()[0];
  // 获取第2列的值(目标工作表名称,数组索引从0开始,第2列对应索引1)
  const targetSheetName = rowData[1];

  // 跳过空的目标名称
  if (!targetSheetName) return;

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = ss.getSheetByName(targetSheetName);

  // 检查目标工作表是否存在,避免报错
  if (!targetSheet) {
    console.log(`目标工作表「${targetSheetName}」不存在,跳过该行移动`);
    return;
  }

  // 将数据追加到目标工作表
  targetSheet.appendRow(rowData);
  // 删除原工作表中的该行
  sourceSheet.deleteRow(row);
}

关键修改说明

  • 触发方式调整:该函数需绑定「表单提交」触发器,而非onEdit。操作步骤:打开脚本编辑器 → 点击「编辑」→「当前项目的触发器」→ 点击「添加触发器」,选择该函数,事件类型设为「表单提交」,来源选择「电子表格」。
  • 源工作表校验:新增判断确保仅处理「表单响应」工作表的提交,避免其他工作表操作误触发。
  • 事件对象适配:利用表单提交事件的e.range直接定位新提交的行,无需判断列位置(表单提交为整行数据)。
  • 异常防护:添加目标工作表存在性检查,避免因工作表名称错误导致脚本中断,同时通过日志记录异常情况。
  • 数据获取优化:直接从提交行提取完整数据,确保移动内容与表单提交完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:36:11