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

时间:2014-03-13 04:16:24

标签: google-apps-script google-sheets

有没有办法在Google电子表格中制​​作某个工作表,对某种类型的用户是否可以编辑和访问,而其他类型的用户无法访问?

我目前有一个Google App Script项目,允许某个用户使用HTML表单输入某些参数,并自动为他创建一个Google电子表格(因此,电子表格中的所有内容都是以编程方式创建的)。 这个新的电子表格应该有不同的"类型"用户。

A"类型"用户只是指对电子表格具有特定权限的特定人员。

例如: 有些用户可以在电子表格中编辑任何内容。还有其他用户只能阅读它(但不能编辑它)。有些用户可以访问自定义菜单(允许他们执行与电子表格相关的特定操作),而其他用户则不应。

目前,我通过两种类型的用户解决了上述问题:

1)给予的用户" Can Edit"创建者访问电子表格。此用户可以编辑电子表格中的任何工作表,并访问每个自定义菜单(因为这些是在" onOpen()"触发器中创建的,该触发器仅在用户具有"可编辑&#34时执行;权威)

2)刚刚获得" Can View"电子表格的公共链接。此用户只能阅读电子表格的每张表,但不能编辑任何表格。他也无法访问任何自定义菜单。

这已经工作了一段时间,但现在我有了新的要求,应该允许第一类用户访问特定的工作表,而第二类用户甚至不应该具有对它们的读访问权。


有没有办法,使用Google App Script或Google Spreadsheets的其他功能来实现这一目标?

我知道可以使纸张可见或不可见,但不会影响每个用户,即使是那些我希望能够查看和编辑它们的用户? 如果可能的话,我也想知道是否可以使用Google App Script以编程方式完成。

还有办法让更多功能仅限于不同类型的用户吗?如果我希望特定用户能够编辑某个工作表但无法访问特定自定义菜单,该怎么办?


如果无法做到这一点,我能想到的唯一解决方案是为这些"限制功能中的每一个创建单独的电子表格,并提供" Can Edit"在该电子表格中访问我想要访问这些功能的每种类型的用户。 但是,理想情况下,所有内容都应该在一个电子表格中完成,因为我希望所有信息都包含在一个访问点中,而不是分散在不同的电子表格中,彼此之间(可能)关系不大。

由于

1 个答案:

答案 0 :(得分:4)

  

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

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

  

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

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

  

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

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

  

我还想知道是否可以使用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()中看到菜单。