Google sheets 如何在Google工作表中搜索和删除命名的受保护范围?

Google sheets 如何在Google工作表中搜索和删除命名的受保护范围?,google-sheets,protection,Google Sheets,Protection,我正在Google Sheets中编写一个脚本,有选择地锁定一大块单元格,每天都需要在相同的保护范围内包含多行单元格 到目前为止,该脚本在定位需要保护的行以及每次运行时创建一个新的受保护范围方面工作正常——但是每次运行(我希望是onOpen)时,它都会创建另一个受保护范围,另一个,另一个。我已将受保护的范围命名为“历史”,但我无法找到一种方法,在下次运行时,仅取消对该范围的保护,然后再保护一个新范围 工作表中还有其他受保护的单元格,所以我不能简单地删除所有保护然后继续-我需要能够删除这一个,具体

我正在Google Sheets中编写一个脚本,有选择地锁定一大块单元格,每天都需要在相同的保护范围内包含多行单元格

到目前为止,该脚本在定位需要保护的行以及每次运行时创建一个新的受保护范围方面工作正常——但是每次运行(我希望是onOpen)时,它都会创建另一个受保护范围,另一个,另一个。我已将受保护的范围命名为“历史”,但我无法找到一种方法,在下次运行时,仅取消对该范围的保护,然后再保护一个新范围

工作表中还有其他受保护的单元格,所以我不能简单地删除所有保护然后继续-我需要能够删除这一个,具体来说,并从那里开始。由于被锁定的单元格范围将不断变化,因此我需要让脚本专门查找这一范围


任何想法都很感激

要更新现有保护,首先必须“获取”它。我找不到一个简单的方法直接做到这一点,但你可以在工作表(或整个电子表格)上获得所有的保护,并通过循环找到你想要的

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

这是有关工作表和保护方法的文档。请注意,使用命名范围执行所有这些操作可能会更好,您可以使用与保护相同的方式获取和更新命名范围。

您是否做了任何努力?努力?是的,我一直在想办法,但由于这是我第一次用表单或谷歌脚本做任何事情,我觉得很难。我以为这是一个寻求帮助的地方。。。