我写了一些代码,使所有电子表格查看者都可以在应用脚本中使用。 我已经使用getViewers()方法来获取实际查看它的查看者名称。但是这种方法让我返回了与我实际共享电子表格的人的名字。...
我还有其他方法可以让电子表格的所有查看者吗? 有什么网络自动化工具可以解决我的问题?
答案 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的严格限制。希望我提供的信息对您有所帮助。