gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:54:24 26 4
gpt4 key购买 nike

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

    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. 始终以所有者身份运行代码或者2.授予非所有者编辑保护范围的权限(由所有者设置)

任何线索/帮助将不胜感激!!

最佳答案

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

我使用的解决方法是使用 onOpen 触发函数。触发器函数仅以工作表所有者身份运行,允许您设置权限。唯一要记住的是只有 3 种类型的触发器。 onOpenonEdit/onChange (非常相似)。这意味着这些触发器是脚本能够更改权限的唯一时间。

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

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

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

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

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

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)
}

关于javascript - 允许非所有者运行更改 Google 表格中保护设置的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com