这是我的问题。我在共享的电子表格文档中生成了一些表格。通过链接共享。想法是锁定除电子表格所有者以外的所有人。所有要锁定的范围已由以下代码锁定:
range.protect().setDescription("Locked");
所有其他范围(任何人都可以修改)保留下来,而无需在它们上调用protect()
。
因此,我使用了Protection class上的示例,并附带了以所有者身份在调试模式下运行的这段代码:
let rangeProtect = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (let i = 0; i < rangeProtect.length; i++) {
let protection = rangeProtect[i];
if (protection.canEdit() && (protection.getDescription() == "Locked")) {
let editors = ss.getEditors();
for (let j = 0; j < editors.length; j++) {
ss.removeEditor(editors[j]);
}
// Add only owner
ss.addEditor(ownerEmail);
}
}
不幸的是,这不起作用。使用该链接的每个人仍然可以编辑所有内容。但是,如果我手动将名称“锁定”的每个受保护范围修改为“仅限所有者”,那么它就可以工作...
那么你能告诉我我在做什么错吗?
我也尝试过这种方法:
let protection = sheet.protect().setDescription('Locked');
let unprotected = sheet.getRange("B1:C10");
protection.setUnprotectedRanges([unprotected]);
问题仍然存在:
setUnprotectedRanges()
调用,但无法进行任何修改。一切都已锁定。几天来我一直在努力解决这个问题,但我的想法已荡然无存。
我真的尝试了很多事情。因此,如果您知道如何正确执行此操作,是否可以提供一段工作代码/共享文档示例来完成此操作?假设:
任何帮助将不胜感激!真的!
注意:这段代码是用Typescript编写的,因为我正在使用CLASP将所有内容都转换为Google Apps脚本的代码。