我正在Google表格中编写一个选择性锁定大块单元格的脚本,每天需要再将一行单元格包含在同一个受保护范围内。
到目前为止,脚本正在工作,在定位需要保护的行并在每次运行时创建一个新的受保护范围 - 但每次运行时(我想要打开它)它会创建另一个受保护的范围,另一个,另一个。我已经命名了受保护范围"历史"但我无法找到一种方法,在下一次运行时,取消保护该范围,然后保护新范围。
表格中还有其他受保护的单元格,所以我不能简单地删除所有保护,然后继续 - 我需要能够删除这一个,特别是,并从那里去。由于被锁定的单元格范围将不断变化,我需要能够让脚本专门查找这一个范围。
任何想法都表示赞赏!
答案 0 :(得分:1)
要更新现有保护,首先必须“获取”它。我找不到一种直接执行此操作的简单方法,但您可以在工作表(或整个电子表格)中获得所有保护,并循环浏览它们以找到您想要的那个。
var protections = ws.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var p in protections) {
if (protections[p].getDescription() == 'History') {
var protection = protections[p];
break;
}
}
现在,您可以使用protection.setRange
方法更新其范围,而无需创建新的保护:
var rangeNew = ws.getRange('A1:C3');
protection.setRange(rangeNew);
以下是工作表getProtectionsType和保护setRange方法的文档。请注意,使用命名范围执行所有操作可能会更好,您可以使用与保护相同的方式获取和更新。