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
相关产品推荐
相关产品推荐

