Google应用脚本web应用getActiveUser.getEmail()在部署为USER_DEPLOYING时无法使用。

问题描述 投票:0回答:1

我正试图创建一个网络应用,将使用谷歌表作为后台。我想让用户访问网络应用,并通过网络应用执行读写操作。我不希望这些用户有一个访问的谷歌表,因为我想限制的数据,他们可以通过Web应用程序读取。我尝试使用 USER_DEPLOYING 作为执行为,但这样做我无法获得使用网络应用的人的电子邮件。有什么方法可以实现我想做的事情吗?

google-apps-script google-authentication
1个回答
0
投票

问题:如果一个网络应用程序使用了google sheets的后台,那么它就会被创建为一个网络应用程序,并且只能通过网络应用程序进行读写操作。

为了安全起见,如果一个web应用被部署到... USER_DEPLOYING (即: Execute the app as: Me)和访问网络应用的用户(也就是那个 活跃用户)不属于同一个G Suite域,也就是脚本运行的授权用户(也就是在该域下的 有效用户),脚本无法访问活动用户的电子邮件。

同样的情况也会发生在任何没有用户授权的情况下(简单的触发器等)。

解释:在没有用户授权的情况下,脚本运行时也会发生同样的情况(简单的触发器等)。

从文档中可以看出,在没有用户授权的情况下,脚本运行时也会发生同样的情况(简单的触发器等)。getActiveUser():

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

© www.soinside.com 2019 - 2024. All rights reserved.