gpt4 book ai didi

javascript - 无法使用脚本删除有效用户对 protected 范围的编辑权限 - 谷歌表格

转载 作者:行者123 更新时间:2023-11-28 04:19:27 30 4
gpt4 key购买 nike

在谷歌表格中,我尝试使用脚本来创建 protected 范围。

我希望脚本创建一个只有所有者可以编辑的 protected 范围,其他人不能编辑,但是当脚本为非所有者的用户运行时,该脚本必须正常工作。

当我以电子表格所有者的身份登录并从脚本编辑器运行代码时,它工作正常 - 它创建了一个只有所有者才能编辑的 protected 范围 G1:G10。

但是,当我以非所有者用户身份登录时运行脚本时, protected 范围的权限允许用户和所有者都能够编辑该范围。我知道this pagethis page ,在 Google 开发人员文档中,但是我看不到任何对我有帮助的内容。

这是我的代码:

function setProtections() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var owner = ss.getOwner();
var effectiveUser = Session.getEffectiveUser();
var range = ss.getRange('G1:G10');
var protection = range.protect()
var editors = protection.getEditors();
protection.removeEditors(editors);
protection.addEditor(owner);
}

有人可以帮忙吗?

最佳答案

removeEditors()不允许删除当前用户:

Removes the given array of users from the list of editors for the protected sheet or range. Note that if any of the users are members of a Google Group that has edit permission, or if all users in the domain have edit permission, those users will still be able to edit the protected area. Neither the owner of the spreadsheet nor the current user can be removed.

但是,您可以使用 Installable Triggerowner 创建,它将作为创建触发器 [owner] 的用户运行您的 setProtections() 方法 - 即使它是由另一位用户。

示例:Installable Trigger onEdit()

function installedOnEditTrigger (e) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

//Checks if the sheet edit happened in the 7th column "G"
if (e.range.getColumn() == 7) {
var range = ss.getRange('G1:G10');
var protection = range.protect()
var editors = protection.getEditors();
//Removes all editors - owners can not be removed
protection.removeEditors(editors);
}
}

关于javascript - 无法使用脚本删除有效用户对 protected 范围的编辑权限 - 谷歌表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45563078/

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