Google Apps脚本 - 获取/分配用户唯一标识符

时间:2015-09-12 14:10:25

标签: google-apps-script

我正在开发Google文档插件,需要知道当前使用该插件的用户之前是否在当前文档或任何文档中使用过该插件。我无法弄清楚哪个服务为我提供了某种我可用于识别当前用户的当前用户的唯一标识符。

基本服务的User.getEmail不够好,因为它在某些条件下无法访问电子邮件且不可靠。

关于最佳方法的想法?

3 个答案:

答案 0 :(得分:1)

不幸的是,没有这样的服务。 Google希望用户的个人信息保密,因此AFAIK通常不会收到用户的电子邮件,除非您的脚本是针对Google Apps域编写的,并且用户与脚本的作者位于同一个域中。

在这种情况下,您唯一可以做的就是使用类似DocumentApp.getActiveDocument().getId()之类的内容,并检查脚本是否在本文档中使用过,但当然这不会让您了解用户是否使用过您的脚本其他文件与否。

此外,您可以向用户显示Prompt Dialog,要求他输入电子邮件,但当然无法检查他是否输入了真实的电子邮件。

答案 1 :(得分:0)

您可以获取应用脚本的唯一用户标识符是Session.getEffectiveUser()。getEmail()

这将返回脚本运行的用户的电子邮件。这比ActiveUser更好,因为如果使用触发器,EffectiveUser将返回安装脚本的用户的电子邮件。

我将其用于多个应用程序以识别许可证分配,并且效果很好。

答案 2 :(得分:0)

看起来最好的解决方案是使用以下方法推出自己的解决方案,以便在适当的时间设置userId:

PropertiesService.getUserProperties().setProperty("userId",<someGeneratedUId>)

然后,只要您想查找此用户是否为可识别用户,

var userId = PropertiesServices.getUserProperties().getProperty("userId")

看起来一旦设置,这样设置的UserProperties就可供这个特定用户(每个用户)在任何地方运行这个附加组件(即所有文档,而不仅仅是当前用户),这个加载项启用/运行。

我将进一步验证这一点,但似乎这在我的测试中有效。