Is there a way, to make a certain sheet in Google Spreadsheets, be editable and accessible to a certain type of user, while not be accessible to another type of user?
我目前有一个Google App Script项目,允许某个用户使用HTML表单输入某些参数,并自动为他创建一个Google电子表格(因此,电子表格中的所有内容都是以编程方式创建的) . 这个新的电子表格应该有不同“类型”的用户访问 .
用户的“类型”仅表示对电子表格具有特定权限的特定人员 .
例如:有些用户可以在电子表格中编辑任何内容 . 还有其他用户只能阅读它(但不能编辑它) . 有些用户可以访问自定义菜单(允许他们执行与电子表格相关的特定操作),而其他用户则不应该 .
现在,我通过两种类型的用户解决了上述问题:
1)创建者给予电子表格“可编辑”访问权限的用户 . 此用户可以编辑电子表格中的任何工作表,并访问每个自定义菜单(因为这些是在“onOpen()”触发器中创建的,该触发器仅在用户具有“可编辑”权限时执行)
2)刚刚给予电子表格“可以查看”公共链接的用户 . 此用户只能阅读电子表格的每张表,但不能编辑任何表格 . 他也无法访问任何自定义菜单 .
这工作了一段时间,但现在我有了新的要求,应该允许第一类用户访问特定的表,而第二类用户甚至不应该具有对它们的读访问权 .
Is there a way, using either Google App Script, or other functionality from Google Spreadsheets, to make this happen?
我知道可以使工作表可见或不可见,但这不会影响每个用户,即使是那些我希望能够查看和编辑它们的用户?如果可能的话,我也想知道是否可以使用Google App Script以编程方式完成 .
Is there also a way to have more functionality restricted to different types of users? What if I want a specific user to be able to edit a certain sheet, but not be able to access specific custom menus?
如果无法这样做,我能想到的唯一解决方案是为每个“受限制的功能”创建单独的电子表格,并在该电子表格中为我想要访问的每种类型的用户提供“可编辑”访问权限这些功能 . 但是,理想情况下,所有内容都应该在一个电子表格中完成,因为我希望所有信息都包含在一个访问点中,而不是分散在不同的电子表格中,彼此之间(可能)关系不大 .
谢谢
1 回答
编辑已经可以访问所有工作表 .
那么,这将需要使用第二个电子表格来导入您只希望“可以查看”的用户看到的数据/工作表,或者您可以创建一个仅显示该数据的Web应用程序,如果您只是想要坚持使用1个电子表格(但仍然是2个网址) .
这很容易手动测试 . 让一个编辑器隐藏一张纸,而 Spectator 在另一个窗口中打开它 . 工作表将隐藏在两者上 .
是的 -
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).hideSheet()
使用与上面相同的技术过滤掉谁应该能够在onOpen()中看到菜单 .