首页 文章

Google电子表格 - 根据用户类型显示表格

提问于
浏览
2

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 回答

  • 4

    现在我有了新的要求,应该允许第一类用户访问特定的工作表

    编辑已经可以访问所有工作表 .

    第二类用户甚至不应该具有读取权限 .

    那么,这将需要使用第二个电子表格来导入您只希望“可以查看”的用户看到的数据/工作表,或者您可以创建一个仅显示该数据的Web应用程序,如果您只是想要坚持使用1个电子表格(但仍然是2个网址) .

    我知道可以使工作表可见或不可见,但这不会影响每个用户,即使是那些我希望能够查看和编辑它们的用户?

    这很容易手动测试 . 让一个编辑器隐藏一张纸,而 Spectator 在另一个窗口中打开它 . 工作表将隐藏在两者上 .

    我还想知道是否可以使用Google App Script以编程方式完成 .

    是的 - SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).hideSheet()

    是否还有一种方法可以将更多功能限制在不同类型的用户中?如果您将用户及其权限存储在某个位置,则可以根据其电子邮件控制运行的功能 .

    function myfunction() {
      var validUsers = ['ex1@ex.com', 'ex2@ex.com'];
      if (validUsers.indexof(Session.getEffectiveUser().getEmail()) >= 0) {
        // continue
      }
    }
    

    如果我希望特定用户能够编辑某个工作表,但无法访问特定的自定义菜单,该怎么办?

    使用与上面相同的技术过滤掉谁应该能够在onOpen()中看到菜单 .

相关问题