【问题标题】:Detect who accessed your Google doc检测谁访问了您的 Google 文档
【发布时间】:2020-10-20 18:57:28
【问题描述】:

我为 Google 文档创建了一个公共链接。 现在任何知道该链接的人都可以访问它。 某些用户在访问 Google 文档时实际上可能已登录到那里的 Google 帐户。

  1. 有什么方法可以获取访问我的文档的用户的电子邮件 ID 吗?

  2. 如果没有,是否有解决方法?就像在其中放置一个链接,如果用户单击该链接,它将获取用户的电子邮件 ID(这只有在他登录到他的 Google 帐户时才有可能)

  3. 实现相同目的的任何替代方法可能是使用 Google 工具或其他工具,或者可能是其他一些文档的提供者?

【问题讨论】:

  • 嗨,我发布了一个答案,解释了您的不同选择。如果您需要有关它们的更多详细信息,请告诉我。

标签: google-docs google-docs-api


【解决方案1】:

关注公共链接的用户是匿名的。 Google docs api 不提供用于控制文档可访问性的接口,因此很可能根本无法获得有权访问文档的用户

【讨论】:

    【解决方案2】:

    您只能访问您组织中用户的电子邮件地址,或者您已明确与之共享文档的用户,或已明确授权您访问其身份的用户。安全策略不允许您访问其他不相关帐户的电子邮件地址。

    对于允许您访问其电子邮件地址的用户,您可以使用 Apps 脚本安装 onOpen 触发器,该触发器可以在用户访问文档时触发一个函数。你可以这样做:

    流程:

    • 按照these stepsprogrammatically 手动安装onOpen 触发器。
    • 将以下函数复制到脚本编辑器并保存项目。此函数执行以下操作:(1)使用getActiveUser()检索正在访问文档的用户的电子邮件,(2)如果安全策略不允许访问用户的身份,则将user设置为Not available,(3 ) 检索具有特定 ID 的电子表格,并 (4) 将用户和当前日期附加到您的工作表中。
    function onOpenTrigger() {
      let user = Session.getActiveUser().getEmail();
      if (!user) user = "Not available";
      const sheet = SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").getSheetByName("Sheet1"); // Spreadsheet ID and sheet name according to your preferences
      sheet.appendRow([user, new Date()]);
    }
    

    执行此操作后,每次用户访问文档时,都会在相应的电子表格中附加一个新行,包括电子邮件地址(或 Not available,如果您不被允许访问)和当前日期。

    其余帐户:

    为了从其余帐户获取数据,您需要获得相应用户的明确同意。

    选项 1. 自定义菜单

    实现此目的的一个选项是使用simple onOpen 触发器来创建一个custom menu,它可用于运行获取电子邮件地址的函数。在这种情况下,用户应在打开文档时单击自定义菜单,以检索访问信息。例如,请参阅此示例:

    function onOpen() {
      var ui = DocumentApp.getUi();
      ui.createMenu('Log user')
        .addItem('Run script', 'addUserAccess')
        .addToUi()
    }
    
    function addUserAccess(){
      let user = Session.getActiveUser().getEmail(); 
      if (!user) user = "Not available";
    }
    

    然后,您如何处理这些数据将取决于您的具体情况。您可以将这些数据附加到您的电子表格中,如前面的示例所示(但这需要将电子表格公开),或者使用 PropertiesService 将其存储,然后将其导出到您喜欢的位置。

    选项 2. 编辑器插件

    另一种选择是将您的脚本作为附加组件。请参阅Extending Google Docs with Add-onsEditor add-on authorization 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 2018-06-03
      • 2015-03-13
      • 2023-03-08
      • 2014-04-21
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多