能否使用Apps Script预填充Google Forms登录账号的姓名与邮箱字段
问题结论
这个需求无法通过直接给原生Google Forms绑定脚本的方式实现——因为Google出于隐私安全限制,受访者打开表单填写页时,表单绑定的Apps Script没有运行权限,拿不到当前登录用户的账号信息。但针对GSuite Business场景,有成熟可落地的替代方案,完全能实现你要的自动填充效果。
推荐落地方案(合规无风险,适配GSuite组织内场景)
这个方案不需要复杂开发,全程用官方支持的能力实现:
- 第一步:配置表单基础设置
打开你的Google Forms,在设置里开启仅贵组织内用户可访问,同时可以先开启「自动收集受访者邮箱」做兜底校验。在表单里添加好「姓名」「邮箱」两个短文本字段。 - 第二步:获取预填充链接模板
点表单右上角的三点菜单,选择「获取预填充链接」,在弹出的表单预览里给姓名、邮箱字段随便输入占位内容(比如姓名填name_placeholder,邮箱填email_placeholder),点「获取链接」复制生成的预填充URL,你会看到URL里带了类似entry.xxxxxx=name_placeholder&entry.yyyyyy=email_placeholder的参数,这两个entry.开头的就是对应字段的ID。 - 第三步:写Apps Script部署中转页
打开表单绑定的Apps Script编辑器,写入以下逻辑:- 开启Admin SDK高级服务(在编辑器左侧「服务」栏点添加,找到Admin Directory API启用即可,需要域管理员给该应用授权组织内用户信息读取权限)
- 部署一个Web应用,权限设置为:以访问用户身份运行、仅组织内用户可访问
- Web应用的访问逻辑很简单:用户打开这个Web应用地址时,脚本通过
Session.getActiveUser().getEmail()拿到当前登录用户的GSuite邮箱,再调用Directory API拉取该邮箱对应的用户姓名,把两个值替换到之前拿到的预填充URL模板的占位符位置,自动重定向到替换后的表单地址。
- 最终效果:你只需要把Web应用的地址发给组织内用户,用户点击后会自动跳转到表单页,姓名、邮箱字段已经自动填充完成,全程不需要用户手动输入,和你要的「打开表单自动填充」体验完全一致。
注意事项
不要尝试给表单绑定onOpen触发器实现自动填充:这个触发器只有表单编辑者打开表单编辑页的时候才会触发,普通受访者打开填写页时根本不会运行这个脚本,完全达不到效果。
如果需要更高的自定义灵活度,你也可以完全用Apps Script写自定义HTML填写页,页面加载时直接拉取用户信息填充字段,提交时把数据写入表单响应库,但开发量比上面的中转方案大很多,非必要不选。
所有涉及读取GSuite用户信息的操作,都需要域管理员提前在Admin后台给对应Apps Script项目开通权限,且如果表单开启了外部用户访问,脚本无法获取访问者的登录账号信息,自动填充逻辑会失效。
内容的提问来源于stack exchange,提问作者Shoaib Alam
相关产品推荐
相关产品推荐

