我有以下代码,允许用户将编辑器添加到受保护范围:
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.授予非所有者访问权限以编辑保护范围(由所有者设置)
任何线索/帮助都会非常感激!!
答案 0 :(得分:0)
如何调用此函数?我最近在使用我试图制作的电子表格时遇到了同样的问题。我得出结论,因为用户没有权限,他们将无法更改权限。
我使用的工作是ToList()
触发器功能。触发器功能仅作为工作表的所有者运行,允许您设置权限。唯一要记住的是,只有3种类型的触发器。 onOpen
或onOpen
/ onEdit
(非常相似)。这意味着这些触发器是脚本能够更改权限的唯一时间。
我最终放弃了这种方法,因为我对onChange
触发器的问题是,如果有人在工作表中工作并且新用户进入工作表,它会将权限更改为新用户并且搞砸了第一个用户在做什么。根据您的脚本,这可能不是问题,但我最终做了一个HTML网络应用程序作为ui,以避免用户之间的干扰。包含数据的Google工作表位于后端。
但无论如何,这是一个如何用触发器打开函数的例子。
运行此功能将安装自定义触发器。您还可以在脚本编辑器的“资源”选项卡中管理触发器。
onOpen
触发器将在打开时调用函数:
function InstallTrigger(){
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger('addManager').forSpreadsheet(sheet).onOpen().create();
}