为什么无法在域外获取当前电子邮件?

时间:2019-08-14 02:57:34

标签: google-apps-script

我想收到用户打开文件的电子邮件:

这是我获取电子邮件的代码,但是此代码只能获取与我的域具有相同域的用户的电子邮件,其他域将返回空:

function onOpen(e) {
 Browser.msgBox("hi " +Session.getActiveUser().getEmail());  
}

为什么无法在域外获取当前电子邮件?

可以获取外部域的电子邮件吗?

1 个答案:

答案 0 :(得分:2)

您可以获取电子邮件,但不能在onOpen()函数中获取电子邮件,并且在文档[1]中没有详细说明的其他情况下也无法获取电子邮件:

  

可用的电子邮件地址的情况有所不同:   例如,用户的电子邮件地址在任何情况下均不可用   允许脚本在未经该用户授权的情况下运行,例如   简单的onOpen(e)或onEdit(e)触发器,这是Google中的自定义函数   表格或部署为“以我的身份执行”(即已授权)的网络应用   由开发人员而非用户)。但是,这些限制   如果开发人员自己运行脚本或   与用户属于同一G Suite域。

在您的情况下,一种可能的解决方法是创建一个菜单[2],单击该菜单会调用您想要的功能,但是以前它将显示同意屏幕以允许所需的权限。示例:

function onOpen() {
  SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
  .createMenu('Actions')
  .addItem('Welcome', 'showEmail')
  .addToUi();  
}

function showEmail() {
 Browser.msgBox("hi " + Session.getActiveUser().getEmail());  
}

[1] https://developers.google.com/apps-script/reference/base/user

[2] https://developers.google.com/apps-script/guides/menus