如何扫描二维码导入信息到Google Forms并解决脚本运行报错问题
问题排查与解决方案
问题根因
- 表单ID填写错误:你使用的是表单公开访问路径的发布ID,
FormApp.openById()需要传入表单编辑界面的ID,两类ID不兼容导致脚本无权限访问表单,触发文件无法打开报错。 - 脚本逻辑与需求不符:你当前使用的代码功能为自动提交仅包含ID的表单响应,并非你需要的「跳转到预填充ID的表单页、用户自主填写剩余内容」,完全不符合业务需求。
- 部署权限配置错误:如果Web App部署时未设置为允许匿名访问,未登录谷歌账号的用户扫码时会触发权限报错。
可行解决方案
步骤1:获取正确的表单参数
- 打开你的谷歌表单编辑页面,URL格式为
https://docs.google.com/forms/d/【正确表单ID】/edit,复制/d/和/edit之间的字符串备用。 - 在表单编辑页右上角点击三个点,选择「获取预填充链接」,在第一个ID输入框中随意填入测试值(如12345),点击页面底部「获取链接」-「复制链接」,从复制的链接中提取第一个问题的参数名,格式为
entry.xxxxxx,记录该值。
步骤2:替换为正确的Code.gs代码
把原有Code.gs内容全部替换为以下代码,记得替换代码中的【你提取的entry.xxxxxx参数】:
function doGet(e) { try { // 读取URL传递的ID参数 const passNo = e.parameter.passNo; if (!passNo) throw new Error("缺少ID参数"); // 拼接预填充表单链接 const prefillUrl = `https://docs.google.com/forms/d/e/1FAIpQLSdsP0e2FsC54QY0Nyrpipi21yC-8ODjO9aRlfOMq51vODRaew/viewform?【你提取的entry.xxxxxx参数】=${encodeURIComponent(passNo)}`; // 直接跳转到预填充的表单页面 return HtmlService.createHtmlOutput(` <script>window.location.href = "${prefillUrl}";</script> <p>正在跳转到表单页...</p> `); } catch (err) { return HtmlService.createHtmlOutputFromFile('Failure'); } }
注:原有Success.html可以删除,脚本会直接跳转,Failure.html保留用作错误提示即可。
步骤3:正确部署Web App
- 点击脚本编辑器右上角「部署」-「新建部署」
- 点击设置图标选择「Web应用」
- 执行身份选择「我(你的谷歌账号邮箱)」
- 有权访问的人选择「任何人,甚至匿名用户」
- 点击「部署」,完成权限验证后复制生成的Web App访问URL
步骤4:生成二维码
二维码内容设置为:【你复制的Web App URL】?passNo=用户的唯一ID,每个用户对应不同的passNo参数值即可,扫码后会自动跳转到预填充了对应ID的表单页面。
测试验证
访问拼接参数后的Web App链接,例:https://script.google.com/macros/s/xxx/exec?passNo=21480,确认可以正常跳转到预填充了21480的表单页面即可。
内容的提问来源于stack exchange,提问作者Wendy
相关产品推荐
相关产品推荐

