[英]Google Sheets Sheet Protection
我有一个包含多个工作表的电子表格。 我已将此电子表格与多个用户共享,我需要保护工作表,以便某些用户只能查看和编辑此电子表格的一个工作表。 如下:
用户1(一位位置经理)需要查看和修改工作表1(该位置的工资单)
用户2(另一个位置经理)需要查看和编辑工作表2(该位置的工资单),但不能查看和编辑工作表1
用户3(区域管理员)需要查看和编辑工作表1和工作表2,但不能查看和编辑工作表3和4。
用户4(区域经理)需要能够查看和编辑表格1、2、3和4。
Google表格仅提供了防止编辑的保护,但是我想知道是否有任何第三方应用程序,脚本或变通办法允许此保护功能防止查看?
简短答案=否。如果您无法通过API或脚本找到此方法,则第三方将无法提供此方法(他们可以访问与我们相同的API)。
稍长的解决方案:您可以创建一个包含所有这些数据的主电子表格,然后再创建4个其他电子表格(每个用户一个),以将数据从正确的工作表中提取到其个人电子表格中。
对于稍长的解决方案,您正在查看特定用户电子表格中的“ onOpen”触发器 ,因此当他们打开电子表格时,它将正确的工作表从主电子表格复制到他们刚刚打开的电子表格中。 “ openByID ”(允许您获取另一个电子表格)和“ copyTo ”(将另一个电子表格复制到当前电子表格)等方法是您的朋友。
一个非常非常简单的版本可能是:
var ss = SpreadsheetApp.openById("ID-FOR-MASTER-SHEET");
var sheet = ss.getSheets()
var destination = SpreadsheetApp.openById("ID-FOR-USERS-SHEET");
sheet[0].copyTo(destination);
否则,如果您有权访问Google Spreadsheet,则始终可以查看其中的所有工作表。
将选项卡拆分为单独的工作表。 创建一个文件夹并将所有文档放入其中。 仅与需要它的所有者共享每个工作表,然后与区域经理共享该文件夹。
尝试importrange命令。
您可以执行以下操作:= IMPORTRANGE(A1,A2)
使用它可以创建一个主表,该表从所有单个存储中提取数据,从而可以为区域管理器提供简单的快照。 您甚至可以镜像原始的标签结构。
评论单独的工作簿体系结构和ImportRange
我警告不要将应用程序拆分为单独的工作簿。 使用ImportRange()要求您将共享权限设置为“具有链接的任何人”,而不是更安全的“仅特定用户”。
由于这个安全问题,我只是将费用授权应用程序从单独的(六个)工作簿重新架构为一个主工作簿。
替代方案:内容服务
在我的应用程序中,我使用Content Service进行只有数据库所有者才能执行的编辑操作。 授权用户只能编辑特定工作表中的特定范围。 然后,为了魔术,他们使用作为数据库所有者运行的内容服务执行宏。
控制观看
可以想象,您可以对工作簿进行编程,以根据用户的身份隐藏工作表。 这要求他们自己进行身份验证(例如,您不能在onOpen()上进行身份验证。问题是当您让协作者同时查看工作簿时。看看工作表如何处理同一文档的并发视图会很有趣。 ,我敢打赌它会起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.