Google apps script 如何获取谷歌电子表格加载项的用户电子邮件?

Google apps script 如何获取谷歌电子表格加载项的用户电子邮件?,google-apps-script,Google Apps Script,我为谷歌电子表格创建了一个插件 每次运行时,它都必须检查用户的电子邮件地址 Session.getActiveUser().getEmail(); 因此,我创建了一个onOpen触发器来获取电子邮件地址,但根据谷歌的数据,这似乎是不可能的 那么,如何使用用户类呢 这是获取电子邮件的函数的外观: function myFunction() { var userEmail=Session.getActiveUser().getEmail(); Browser.msgBox("Your em

我为谷歌电子表格创建了一个插件

每次运行时,它都必须检查用户的电子邮件地址

Session.getActiveUser().getEmail();
因此,我创建了一个onOpen触发器来获取电子邮件地址,但根据谷歌的数据,这似乎是不可能的

那么,如何使用用户类呢

这是获取电子邮件的函数的外观:

function myFunction() {
  var userEmail=Session.getActiveUser().getEmail();
  Browser.msgBox("Your email address is "+userEmail);
}
我试过这么做
getEffectiveUser()
,但它给出了开发人员的电子邮件地址

我尝试与第二个用户共享电子表格,他允许显示电子邮件位,无论我做什么,我总是得到一个空字符串


我需要这个应用程序来检查用户的电子邮件是否在另一个电子表格列表中。

本质上,这几乎是不可能的,或者至少是难以置信的困难。正如您链接的文档所示,您无法使用工作表中的自定义函数提取其他用户的电子邮件地址,这是一件好事,因为使用此方法可以很容易地将电子邮件地址发送给不知情的用户

一个很好的经验法则是->如果他们没有在与你相同的组织中使用谷歌应用程序=你无法获得他们的电子邮件地址。(片刻思考告诉我们为什么这是一件好事。一旦你授权某人查看你的地址,即使是出于合法目的,你也不知道他们之后会如何处理,垃圾邮件发送者和骗子希望能够使用应用程序脚本来发送地址)


这里唯一合理的解决方案是让脚本检查地址,如果返回空白字符串,请用户在表单/工作表/应用程序等的文本框中手动输入他们的地址。

onOpen以受限方式运行,因此一旦发布,您就无法获得电子邮件地址。您最多只能访问PropertiesService。你想干什么?如果你能找到一个工作流程,其中有人必须点击才能进入菜单,那么它可能会工作得更好。对于一个附加组件,我将菜单移到了侧栏,它可以getEffectiveUser()并显示一组自定义按钮/菜单。谢谢,我正在尝试检查用户的电子邮件是否在另一个电子表格的列表中。谢谢,我明白了。如果脚本作为附加组件部署,也许我可以改用getEffectiveUser()?是的。。。在某些情况下,这同样取决于谁在运行它以及何时运行它。如果您将其作为一个附加组件进行部署,它仍然(在大多数情况下)只适用于安装它的用户,而不适用于外部用户。例如,如果我在我的域中的工作表上安装了加载项,并且我的域外部的用户访问了该工作表,它仍然无法获取外部用户地址,只能获取我的地址,因为我是安装它的人。好的,这就够了。我只需要安装插件的用户的电子邮件