首页 > 解决方案 > 如何在应用程序脚本中获取活动用户的电子邮件?[解决了]

问题描述

所以我有一个公司网站,它对不同的用户有不同的权限。身份验证通过将当前用户的谷歌登录电子邮件与谷歌表上的用户进行比较,从而获得网站的正确权限。该程序运行良好,但无法检测到来自不是脚本编辑者的用户的电子邮件。我知道这是为了防止网站收集电子邮件地址,但是有没有办法要求用户允许查看他/她的登录电子邮件地址名称以获得正确的权限?代码如下所示:

  var user = Session.getActiveUser();
  var email = user.getEmail();
  var sheet = SpreadsheetApp.openByUrl('link to the google sheet I use').getActiveSheet();
...
//In a loop to go through sheet:

  if(sheet.getRange(i,1).getValue() === email && email !== ""){
    //Continue...
  }

如果我与其他用户尝试此操作,则电子邮件为空白。知道我能做什么吗?

标签: google-apps-script

解决方案


根据此处的 Apps Script Web App 文档:

Web 应用程序的权限因您选择执行应用程序的方式而异:

以我的身份执行应用程序——在这种情况下,无论谁访问 Web 应用程序,脚本始终以您(脚本的所有者)身份执行。

以访问 Web 应用程序的用户身份执行应用程序- 在这种情况下,脚本以使用 Web 应用程序的活动用户的身份运行。当用户授权访问时,这种权限方法会导致 Web 应用程序显示脚本所有者的电子邮件。

因此,为了检索当前用户的电子邮件,您必须将权限更改为以访问 Web 应用程序的用户身份执行应用程序

参考


推荐阅读