Google Apps Script Web应用访问权限控制失效问题求助
问题根源与解决方法
问题分析
- 部署配置错误:你将运行身份设为“我自己”,此时
Session.getActiveUser()只会返回部署者(你)的账号,无法获取实际访问用户的邮箱,这是权限判断失效的核心原因。 - 代码语法错误:返回无权限提示的HTML标签未闭合,
'</p>'误写为'<p>',会导致页面输出异常。 - 逻辑缺失:有权限的用户访问时,代码未返回任何有效内容,会造成页面空白。
解决步骤
1. 修改部署配置
重新部署Web应用,将运行身份从“我自己”改为**“以访问用户身份运行”**,这样脚本才能获取到实际访问者的Google账号信息。
2. 修正代码
以下是完整的修正代码:
function doGet() { // 指定允许访问的Google账号 var allowedEmails = ["xxxx1@gmail.com", "xxxx2@gmail.com", "xxxx3@gmail.com"]; // 获取当前访问用户的邮箱 var LOGIN_USER = Session.getEffectiveUser().getEmail(); // 权限判断 if (!allowedEmails.includes(LOGIN_USER)) { return HtmlService.createHtmlOutput('<p>您没有访问权限</p>'); } // 有权限则返回正常内容(可根据需求替换) return HtmlService.createHtmlOutput('<p>欢迎访问!</p>'); }
- 用
Session.getEffectiveUser()替代Session.getActiveUser(),在“以访问用户身份运行”模式下能稳定获取访问者邮箱。 - 修复了HTML标签闭合错误。
- 补充了有权限用户的返回内容,避免页面空白。
3. 重新部署
保存代码后重新部署Web应用,确保新配置和代码生效。
内容的提问来源于stack exchange,提问作者user17290563
相关产品推荐
相关产品推荐

