部署为USER_DEPLOYING的Google应用程序脚本网络应用程序getActiveUser.getEmail()不起作用

时间:2020-06-11 06:52:00

标签: google-apps-script google-authentication

我正在尝试创建一个将使用Google表格作为后端的网络应用。我想使用户能够仅通过Web应用程序访问Web应用程序并执行读/写操作。我不想让这些用户访问Google工作表,因为我想限制他们可以通过网络应用读取的数据。我尝试使用USER_DEPLOYING作为执行方式,但是这样做无法获取正在使用Web应用程序的人员的电子邮件。有什么方法可以实现我的目标?

1 个答案:

答案 0 :(得分:0)

问题:

出于安全原因,如果将Web应用程序部署到USER_DEPLOYING(即Execute the app as: Me)并且访问该Web应用程序的用户(即active user)没有与脚本在其权限下运行的用户(即effective user)属于同一G Suite域,该脚本无权访问活动用户的电子邮件。

在未经用户授权的情况下运行脚本的任何情况(简单的触发器等),都会发生同样的情况。

说明:

摘自getActiveUser()上的文档:

获取有关当前用户的信息。 如果安全策略不允许访问用户身份,则User.getEmail()返回一个空字符串。可用电子邮件地址的情况各不相同:例如,在任何允许未经用户授权运行脚本的上下文中,用户的电子邮件地址都不可用,例如简单的onOpen(e)或onEdit(e)触发器, Google表格或部署为“以我的身份执行” (即由开发人员而非用户授权)的网络应用中的自定义功能。但是,如果开发人员自己运行脚本或与用户属于同一G Suite域,这些限制通常不适用