GAS 运行 为用户时的用户访问请求
User access request when GAS run as the user
在作为绑定到 public(免费)Gmail 帐户中的电子表格的网络应用程序发布的 GAS 中,我正在将许多不相关用户的信息编译到该电子表格中,任何 Gmail 用户帐户都可以访问该网络应用程序.
但是当脚本作为用户 运行 时,用户可以访问应用程序(在用户授予应用程序权限后),但它会在脚本访问电子表格的位置停止。告知用户请求访问权限。当 运行 作为该用户时,我必须将电子表格“共享”给用户以使应用程序正常运行,但这是有问题的——潜在用户太多。
如果另一个版本的脚本是 运行 而不是在我的帐户下,则用户可以访问该 webapp,但该脚本无法访问用户的 Gmail 地址。大问题,因为 webapp 必须有用户的 Gmail 地址才能进行 security/application 访问控制。
(网络应用程序正在开发中,Google 尚未寻求“批准”。)
我如何拥有一个 Web 应用程序 (a) 修改中央电子表格中的内容,(b) 任何 Gmail 用户都可以访问,(c) 脚本可以访问 Session.getActiveUser().getEmail () 和 (d) 用户不需要对该中央电子表格具有编辑权限?脚本唯一需要的用户帐户信息是用户 Gmail 地址——同样用于应用程序访问控制和安全性。 (由于 Google 为我提供了一个 link,让任何人都可以完全访问电子表格(如果他们也有 URL),我不能在 运行 在任何 Gmail 帐户下,通过应用程序的功能和内部访问控制来管理电子表格内容的完整性?)
如果除了 运行 用户 Gmail 帐户下的网络应用程序并授予该用户对电子表格的编辑权限之外没有其他解决方案,是否会产生重大风险(我没有 intentionally/overtly披露电子表格的 URL) 用户可以访问和更改电子表格,超出网络应用程序执行的 insert/edit 功能?如果风险很低,我可以在网络应用程序中使用一个功能,当 Gmail 地址预先注册在网络应用程序的用户列表中时,自动将电子表格编辑权限授予 Gmail 帐户吗?
谢谢!
让我从 c) 开始:没有办法让 Session.getActiveUser().getEmail()
免费使用 Google 个帐户(即 gmail.com 个帐户),容器/脚本所有者除外.
关于 a) b) 和 d) 您可以使用 Google 表格 API 通过使用 UrlFetch 服务和服务帐户而不是电子表格服务或高级表格来调用它服务。
关于允许任何人编辑中央电子表格,一旦他们使用 Google 表格应用程序或网络应用程序打开它,他们将能够在 Google 中找到该电子表格Drive > Shared with me among other places...恕我直言,出现问题的可能性很大,但影响取决于几个因素,即某些更改可能会通过使用版本历史记录来恢复,但电子表格可能会损坏。如果您还没有大量使用 Google Sheets 版本历史记录,最好先深入熟悉它,然后再将其作为备份/灾难恢复的主要工具。
来自https://developers.google.com/apps-script/reference/base/session#getactiveuser
getActiveUser()
Gets information about the current user. If security policies do not allow access to the user's identity, User.getEmail() returns a blank string. The circumstances in which the email address is available vary: for example, the user's email address is not available in any context that allows a script to run without that user's authorization, like a simple onOpen(e) or onEdit(e) trigger, a custom function in Google Sheets, or a web app deployed to "execute as me" (that is, authorized by the developer instead of the user). However, these restrictions generally do not apply if the developer runs the script themselves or belongs to the same Google Workspace domain as the user.
相关
在作为绑定到 public(免费)Gmail 帐户中的电子表格的网络应用程序发布的 GAS 中,我正在将许多不相关用户的信息编译到该电子表格中,任何 Gmail 用户帐户都可以访问该网络应用程序.
但是当脚本作为用户 运行 时,用户可以访问应用程序(在用户授予应用程序权限后),但它会在脚本访问电子表格的位置停止。告知用户请求访问权限。当 运行 作为该用户时,我必须将电子表格“共享”给用户以使应用程序正常运行,但这是有问题的——潜在用户太多。
如果另一个版本的脚本是 运行 而不是在我的帐户下,则用户可以访问该 webapp,但该脚本无法访问用户的 Gmail 地址。大问题,因为 webapp 必须有用户的 Gmail 地址才能进行 security/application 访问控制。
(网络应用程序正在开发中,Google 尚未寻求“批准”。)
我如何拥有一个 Web 应用程序 (a) 修改中央电子表格中的内容,(b) 任何 Gmail 用户都可以访问,(c) 脚本可以访问 Session.getActiveUser().getEmail () 和 (d) 用户不需要对该中央电子表格具有编辑权限?脚本唯一需要的用户帐户信息是用户 Gmail 地址——同样用于应用程序访问控制和安全性。 (由于 Google 为我提供了一个 link,让任何人都可以完全访问电子表格(如果他们也有 URL),我不能在 运行 在任何 Gmail 帐户下,通过应用程序的功能和内部访问控制来管理电子表格内容的完整性?)
如果除了 运行 用户 Gmail 帐户下的网络应用程序并授予该用户对电子表格的编辑权限之外没有其他解决方案,是否会产生重大风险(我没有 intentionally/overtly披露电子表格的 URL) 用户可以访问和更改电子表格,超出网络应用程序执行的 insert/edit 功能?如果风险很低,我可以在网络应用程序中使用一个功能,当 Gmail 地址预先注册在网络应用程序的用户列表中时,自动将电子表格编辑权限授予 Gmail 帐户吗?
谢谢!
让我从 c) 开始:没有办法让 Session.getActiveUser().getEmail()
免费使用 Google 个帐户(即 gmail.com 个帐户),容器/脚本所有者除外.
关于 a) b) 和 d) 您可以使用 Google 表格 API 通过使用 UrlFetch 服务和服务帐户而不是电子表格服务或高级表格来调用它服务。
关于允许任何人编辑中央电子表格,一旦他们使用 Google 表格应用程序或网络应用程序打开它,他们将能够在 Google 中找到该电子表格Drive > Shared with me among other places...恕我直言,出现问题的可能性很大,但影响取决于几个因素,即某些更改可能会通过使用版本历史记录来恢复,但电子表格可能会损坏。如果您还没有大量使用 Google Sheets 版本历史记录,最好先深入熟悉它,然后再将其作为备份/灾难恢复的主要工具。
来自https://developers.google.com/apps-script/reference/base/session#getactiveuser
getActiveUser()
Gets information about the current user. If security policies do not allow access to the user's identity, User.getEmail() returns a blank string. The circumstances in which the email address is available vary: for example, the user's email address is not available in any context that allows a script to run without that user's authorization, like a simple onOpen(e) or onEdit(e) trigger, a custom function in Google Sheets, or a web app deployed to "execute as me" (that is, authorized by the developer instead of the user). However, these restrictions generally do not apply if the developer runs the script themselves or belongs to the same Google Workspace domain as the user.
相关