Google Apps脚本 - 范围保护&访问

时间:2014-08-12 16:12:21

标签: google-apps-script google-sheets

我正在为100多所学校管理Google电子表格。每个学校的电子表格都有多个用户角色(例如校长,教练,教师等),我需要限制访问权限,并且只允许人们编辑某些范围。以编程方式保护范围是最简单的解决方案,但不幸的是,目前使用Google Apps脚本无法做到这一点。

去年,当我这样做时,我创建了一个包含所有受保护范围的模板。然后我复制了100多次模板(保留了所有范围保护)。然后我以编程方式添加了用户并给了他们"仅评论"访问。然后我改变了他们对" Can Edit"的访问权限。并手动授予他们访问权限,仅编辑他们需要的范围。这个过程只给他们编辑访问我手动更改的范围,同时保留他们"可以评论"访问其他范围(我想要保护)。虽然单调乏味,但这样做很好,因为对于大多数用户来说,有更多的范围受到保护而不是可编辑...所以保留为"可以评论"对于其他范围很方便。

今年我正在努力做同样的事情。我已经保护了电子表格中的范围,并为我的用户添加了"可以评论"权限。但是,当我将用户更改为"可以编辑"访问,他们可以编辑所有内容(包括受保护的范围)!这似乎是默认功能。现在我必须进入每个范围并删除编辑权限。去年,对于每个范围,我只需要为少数用户授予编辑权限......如果我找不到解决办法,这将会更耗时。

有没有人知道这方面的解决方法?这是Google Spreadsheets 2.0的产品(去年我使用的是旧版Google表格)吗?

感谢。

1 个答案:

答案 0 :(得分:0)

February 2015以来,现在可以使用Google App Scripts programmatically protect ranges和工作表。 请注意,Protection类仅适用于the new Sheets

documentation的示例:

// Protect range A1:B10, then remove all other users from the list of editors.
 var ss = SpreadsheetApp.getActive();
 var range = ss.getRange('A1:B10');
 var protection = range.protect().setDescription('Sample protected range');

 // Ensure the current user is an editor before removing others. Otherwise, if the user's edit
 // permission comes from a group, the script will throw an exception upon removing the group.
 var me = Session.getEffectiveUser();
 protection.addEditor(me);
 protection.removeEditors(protection.getEditors());
 if (protection.canDomainEdit()) {
   protection.setDomainEdit(false);
 }