google-apps-script - 如何在应用程序脚本中获取活动用户的电子邮件?[解决了]
问题描述
所以我有一个公司网站,它对不同的用户有不同的权限。身份验证通过将当前用户的谷歌登录电子邮件与谷歌表上的用户进行比较,从而获得网站的正确权限。该程序运行良好,但无法检测到来自不是脚本编辑者的用户的电子邮件。我知道这是为了防止网站收集电子邮件地址,但是有没有办法要求用户允许查看他/她的登录电子邮件地址名称以获得正确的权限?代码如下所示:
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...
}
如果我与其他用户尝试此操作,则电子邮件为空白。知道我能做什么吗?
解决方案
根据此处的 Apps Script Web App 文档:
Web 应用程序的权限因您选择执行应用程序的方式而异:
以我的身份执行应用程序——在这种情况下,无论谁访问 Web 应用程序,脚本始终以您(脚本的所有者)身份执行。
以访问 Web 应用程序的用户身份执行应用程序- 在这种情况下,脚本以使用 Web 应用程序的活动用户的身份运行。当用户授权访问时,这种权限方法会导致 Web 应用程序显示脚本所有者的电子邮件。
因此,为了检索当前用户的电子邮件,您必须将权限更改为以访问 Web 应用程序的用户身份执行应用程序。
参考
推荐阅读
- scala - 数据框上的地图需要太长时间
- neo4j - 无法使用嵌入式 Neo4J/Gremlin 设置页面缓存大小
- php - 如何在网页上显示多个动态表格
- spring - Postgres JDBC 错误:收到结果集元组,但没有字段结构
- regex - 是否可以使用 Notepad++ Regex 从 XML 中获取元素?
- javascript - onClick 事件上的 JavaScript 代码导致“危险的 Request.Path”错误
- linux - 获取完整的当前 crontab 行,并为每行创建唯一的结果电子邮件标题(来自、主题等)
- python - 正则表达式检测列表中的专有名词
- javascript - 如何在 React Native 中显示加载按钮按下 POST 请求?
- html - 使用 DinkToPDF 进行分页