如何获取设置为任何人可访问的Google Web App脚本创建者邮箱
问题根因
当Google Web App的访问权限设置为「任何人,甚至未登录Google的用户」时,Google出于隐私保护策略限制了Session.getActiveUser().getEmail()接口的返回,匿名访问场景下会拿到空值,无法直接通过该接口获取脚本创建者的邮箱。
最优解决方案(100%准确,无依赖)
你只需要固定获取脚本创建者的邮箱,完全不需要依赖Gmail邮件统计,直接通过以下两种方式实现即可:
方案1:硬编码邮箱(最简单)
如果是你自己用的脚本,直接把创建者邮箱写死在代码里即可,部署后不管谁访问都能拿到正确值:
// 直接替换为你自己的邮箱 const CREATOR_EMAIL = "xxx@gmail.com"; function doGet(){ // 这里直接调用GmailApp就可以访问创建者的邮箱,只要部署时执行身份选的是你 return ContentService.createTextOutput("创建者邮箱是:" + CREATOR_EMAIL); }
方案2:脚本属性存储(适合通用脚本场景)
如果脚本需要通用,不想硬编码邮箱,可以先跑一次初始化函数把创建者邮箱写入脚本属性,之后直接读取即可:
- 先在脚本编辑器里单独运行一次初始化函数(只有脚本所有者有权限运行,运行时会请求权限,同意即可):
// 仅需运行一次,后续不需要再调用 function initCreatorEmail() { const creatorMail = Session.getActiveUser().getEmail(); PropertiesService.getScriptProperties().setProperty("CREATOR_MAIL", creatorMail); }
- 之后在Web App逻辑里直接读取属性:
function getCreatorEmail() { return PropertiesService.getScriptProperties().getProperty("CREATOR_MAIL"); } function doGet() { const creatorMail = getCreatorEmail(); // 你的Gmail访问逻辑写在这里即可,执行身份为创建者时默认访问创建者的Gmail return ContentService.createTextOutput("创建者邮箱是:" + creatorMail); }
部署注意事项
部署Web App时,执行身份必须选择「我(你的邮箱地址)」,访问权限选择「任何人,甚至匿名用户」,即可实现匿名用户访问时,脚本依旧以创建者身份运行、正常访问创建者的Gmail,同时稳定拿到创建者的邮箱地址。
你之前使用的统计邮件收件人的方案存在误差风险,比如前10封邮件收件人多为别名、转发地址时会返回错误结果,上述方案完全规避了这个问题,也不需要额外调用Gmail接口统计,性能更稳定。
内容的提问来源于stack exchange,提问作者michaeldon
相关产品推荐
相关产品推荐

