如何为 google 应用程序脚本自定义函数中的 "active user" 获取用户 属性

How to get the user property for the "active user" in google apps script custom function

我发布了 Google Apps Script 独立电子表格插件,但在自定义函数中使用 PropertiesService.getUserProperties() 时遇到了一些问题。

如果用户A安装了插件并在用户属性中保存了一些数据。 然后用户A把电子表格分享给用户B。当用户B运行自定义函数时,他可以为用户A获取用户属性中保存的数据。这不是我想的用户属性 作品。用户 A 和 B 都应该获得自己保存的数据。

那么共享电子表格的活跃用户是什么?我不希望所有电子表格查看者都为电子表格创建者获取保存的数据。我在代码或 "Cloud Platform project" 选项中做错了什么吗?

换句话说,如何在共享电子表格中为不同的查看者获取用户属性中保存的不同数据?

我试图在自定义函数中获取活动用户的电子邮件,但它不起作用。

请注意,我无法在自定义函数中使用 Session.getActiveUser,因为 Google Apps Script 自定义函数不支持会话服务。它会得到一个无效的权限异常。

https://developers.google.com/apps-script/guides/sheets/functions#Advanced

谢谢,

自定义函数无法访问 PropertiesServices.userProperties()(电子表格所有者可能例外)。

根据https://developers.google.com/apps-script/guides/sheets/functions

Unlike most other types of Apps Scripts, custom functions never ask users to authorize access to personal data. Consequently, they can only call services that do not have access to personal data, specifically the following:

虽然 Properties 包含在列表中并且没有关于此服务的任何注释,但由于自定义功能不要求用户授权访问个人数据,因此不应该 return PropertiesServices.userProperties() 因为它可能存储用户个人数据。

写了很多代码去测试不同的场景,我相信已经没有办法解决上面的问题了。

所以我将使用变通方法来实现目标。万一有人也运行陷入困境。我会在这里放下我的测试结果。

如果 Google 帐户 A 将电子表格共享到 Google 帐户 B。

  1. 在自定义函数中,他们都得到了A的用户属性。
  2. 在网页中,通过script.run调用服务器函数,A和B都可以 获得他们自己的用户 属性。