允许非所有者运行更改Google表格中保护设置的脚本?

时间:2017-03-07 21:23:24

标签: javascript google-apps-script google-sheets

我有以下代码,允许用户将编辑器添加到受保护范围:

    function addManager() {
    var ss = SpreadsheetApp.getActive();
    var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
    var managerEmail= Browser.inputBox("Enter new manager's email address: ");
    for (var i = 0; i < protections.length; i++) {
    var protection = protections[i];
    protection.addEditor(managerEmail);  
   }
   Browser.msgBox("Access Granted To "+managerEmail)
   }

但是,当任何非所有者的用户尝试运行代码时,他们会收到一条错误消息,指出他们没有编辑保护的权限(由所有者设置)。

我怎样才能: 1.始终以代理OR运行代码 2.授予非所有者访问权限以编辑保护范围(由所有者设置)

任何线索/帮助都会非常感激!!

1 个答案:

答案 0 :(得分:0)

如何调用此函数?我最近在使用我试图制作的电子表格时遇到了同样的问题。我得出结论,因为用户没有权限,他们将无法更改权限。

我使用的工作是ToList()触发器功能。触发器功能仅作为工作表的所有者运行,允许您设置权限。唯一要记住的是,只有3种类型的触发器。 onOpenonOpen / onEdit(非常相似)。这意味着这些触发器是脚本能够更改权限的唯一时间。

我最终放弃了这种方法,因为我对onChange触发器的问题是,如果有人在工作表中工作并且新用户进入工作表,它会将权限更改为新用户并且搞砸了第一个用户在做什么。根据您的脚本,这可能不是问题,但我最终做了一个HTML网络应用程序作为ui,以避免用户之间的干扰。包含数据的Google工作表位于后端。

但无论如何,这是一个如何用触发器打开函数的例子。

运行此功能将安装自定义触发器。您还可以在脚本编辑器的“资源”选项卡中管理触发器。

onOpen

触发器将在打开时调用函数:

function InstallTrigger(){
  var sheet = SpreadsheetApp.getActive();
 ScriptApp.newTrigger('addManager').forSpreadsheet(sheet).onOpen().create();  
}