Google Form提交生成参考编号问题:确认页显示旧编号求解决方案
问题原因
你当前的代码逻辑是表单提交完成后才更新确认消息,但用户在提交时看到的是修改前的默认消息,更新后的消息只会被下一个提交的用户看到,所以出现了“显示上一个参考编号”的问题。
解决方案
改用Google表单的「提交时返回自定义消息」功能,直接在提交过程中生成并返回当前用户的参考编号,同时把编号写入响应表对应行,避免重复数据。
修正后的完整代码
// 生成参考编号 function generateReferenceNumber() { let randomChars = ''; const possibleChars = '0123456789'; for (let i = 0; i < 4; i++) { randomChars += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length)); } return 'INQ' + randomChars; } // 表单提交时触发,直接返回确认消息并写入参考编号到表格 function onFormSubmit(e) { // 生成当前提交的参考编号 const referenceNumber = generateReferenceNumber(); // 获取响应表中当前提交的行,写入参考编号(默认放在最后一列) const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses"); if (sheet) { // e.range是当前提交数据所在的行,直接在该行最后一列写入编号 const lastColumn = sheet.getLastColumn(); e.range.offset(0, lastColumn).setValue(referenceNumber); } // 返回实时确认消息给当前提交的用户 return "感谢提交!你的参考编号是:" + referenceNumber; }
配置步骤
- 打开你的Google表单,点击右上角「更多」→「脚本编辑器」,替换原有代码为上面的代码
- 保存脚本,命名为「参考编号生成器」之类的名称
- 返回Google表单,点击「设置」→「演示」→「确认消息」,选择「使用脚本函数」,然后选择我们的
onFormSubmit函数 - 保存设置,测试提交表单,现在就能看到当前提交的参考编号了
关键说明
- 不再手动调用
appendRow,因为表单已经自动把用户提交的数据写入响应表,直接用e.range定位到当前提交的行,避免重复数据 - 利用表单的「提交时运行脚本返回消息」功能,实时把当前生成的编号返回给用户,彻底解决“显示上一个编号”的问题
内容的提问来源于stack exchange,提问作者adriel de Jesus
相关产品推荐
相关产品推荐

