繁体   English   中英

Google表格工作表保护

[英]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)

  • A1 =工作表网址
  • A2 = Tab!Range,即Store1!A1:Q500

使用它可以创建一个主表,该表从所有单个存储中提取数据,从而可以为区域管理器提供简单的快照。 您甚至可以镜像原始的标签结构。

评论单独的工作簿体系结构和ImportRange

我警告不要将应用程序拆分为单独的工作簿。 使用ImportRange()要求您将共享权限设置为“具有链接的任何人”,而不是更安全的“仅特定用户”。

由于这个安全问题,我只是将费用授权应用程序从单独的(六个)工作簿重新架构为一个主工作簿。

替代方案:内容服务

在我的应用程序中,我使用Content Service进行只有数据库所有者才能执行的编辑操作。 授权用户只能编辑特定工作表中的特定范围。 然后,为了魔术,他们使用作为数据库所有者运行的内容服务执行宏。

控制观看

可以想象,您可以对工作簿进行编程,以根据用户的身份隐藏工作表。 这要求他们自己进行身份验证(例如,您不能在onOpen()上进行身份验证。问题是当您让协作者同时查看工作簿时。看看工作表如何处理同一文档的并发视图会很有趣。 ,我敢打赌它会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM