表单提交时如何自动将Google表单最新响应行复制到另一工作表末行
实现表单提交自动触发复制的操作步骤
一、配置自动触发触发器
按以下步骤操作即可完成触发器配置,无需修改现有代码就能实现表单提交自动运行复制功能:
- 打开你正在使用的Google Sheets文件,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑页面
- 在脚本编辑器左侧导航栏点击「触发器」(闹钟形状的图标),进入触发器管理页
- 点击页面右下角的「添加触发器」按钮,在弹出的配置窗口中按如下参数选择:
- 选择要运行的函数:
copy - 选择要运行的部署:保持默认的Head即可
- 选择事件来源:电子表格
- 选择事件类型:表单提交时
- 选择要运行的函数:
- 其余配置保持默认,点击「保存」,按页面提示完成账号权限授权
- 授权时如果出现「Google尚未验证此应用」的提示,点击「高级」→「继续前往[你的脚本名称]」即可,这是个人开发脚本的正常提示,无安全风险
二、(可选)优化代码提升同步稳定性
你当前使用的代码逻辑是每次运行都取表单响应表的最后一行复制,该逻辑在短时间内有多个用户同时提交表单时,有小概率出现复制错行的问题。你可以替换为以下适配触发器事件对象的代码,直接获取新提交的响应数据,稳定性更高:
function copy(e) { // 直接通过触发器事件对象获取新提交的行数据 const newResponse = e.values; const ss = SpreadsheetApp.getActiveSpreadsheet(); const targetSheet = ss.getSheetByName("targetsheet"); const emptyRow = targetSheet.getLastRow() + 1; // 写入数据到目标表 targetSheet.getRange(emptyRow, 1, 1, newResponse.length).setValues([newResponse]); }
内容的提问来源于stack exchange,提问作者Ramodojo
相关产品推荐
相关产品推荐

