使用App Script获取电子表格的所有查看者

时间:2019-10-10 11:51:47

标签: google-apps-script google-sheets-api

我写了一些代码,使所有电子表格查看者都可以在应用脚本中使用。 我已经使用getViewers()方法来获取实际查看它的查看者名称。但是这种方法让我返回了与我实际共享电子表格的人的名字。...

我还有其他方法可以让电子表格的所有查看者吗? 有什么网络自动化工具可以解决我的问题?

1 个答案:

答案 0 :(得分:0)

答案:

无法获得使用Google Apps脚本打开过Google云端硬盘文件的人员列表-不存在返回此列表的方法。 getViewers()方法返回具有文件查看和注释权限的人员列表,而getEditors()检索具有编辑权限的人员列表。

问题:

  

我还有其他方法可以让电子表格的所有查看者吗?有什么网络自动化工具可以解决我的问题?

由于这是一个巨大的安全问题,因此无法吸引Google表格的查看者。 该信息未存储,因此无法检索。

解决方法:

您可以创建一个自定义函数,以在用户打开文件时存储其用户名-尽管请注意,触发器具有限制,并且 仅在打开文件的人具有编辑权限的情况下才能运行。 / em> ,我在下面列出了Apps脚本触发器限制列表,供您查看并确定哪种方法最适合您。

代码:

function onOpen(e) {
  var user = e.user.getEmail();
  // do some code to store or save this parameter
  // for example save it to a hidden sheet or email it to yourself
  // though an email would require an installable trigger to be made
}

简单触发限制:

这些并不是全部限制(可以使用完整限制here),但是我认为这些与您最相关。

根据Google Apps脚本简单触发器文档:

  
      
  • 如果以只读(查看或评论)模式打开文件,则它们不会运行。
  •   
  • 他们无法访问需要授权的服务。例如,简单触发器不能发送电子邮件,因为Gmail服务需要授权,但是简单触发器可以使用语言服务翻译短语,该匿名服务。
  •   
  • 他们可以修改绑定到的文件,但不能访问其他文件,因为这需要授权。
  •   
  • 他们可能无法确定当前用户的身份,具体取决于一组复杂的安全性限制。
  •   

最后一点很重要-取决于G Suite域的安全策略,可以获得有关当前用户的信息。对此的详细说明可以在getActiveUser()方法文档中找到:

  

如果安全策略不允许访问用户的身份,则User.getEmail()返回空字符串。可用电子邮件地址的情况各不相同:例如,在任何允许未经用户授权运行脚本的上下文中,用户的电子邮件地址都不可用,例如简单的onOpen(e)或onEdit(e)触发器, Google表格中的自定义功能或部署为“以我的身份执行”(即由开发人员而非用户授权)的网络应用。但是,如果开发人员自己运行脚本或与用户属于同一G Suite域,则这些限制通常不适用。

出于充分的原因,要获取查看文件的人员列表存在很大的安全性问题,因此,您要执行的操作受到Google的严格限制。希望我提供的信息对您有所帮助。

参考文献: