首页 文章

如何在Google表格中搜索和删除指定的受保护范围?

提问于
浏览
3

我正在Google表格中编写一个脚本,选择性地锁定大块单元格,每天需要在同一个受保护范围内再添加一行单元格 .

到目前为止,该脚本在定位需要保护的行并在每次运行时创建新的受保护范围方面都有效 - 但每次运行时(我想要打开它)都会创建另一个受保护的范围,并且另一个,另一个 . 我已经命名了受保护的范围“历史”,但我无法找到一种方法,在下一次运行时,取消保护该范围,然后保护新的范围 .

工作表中还有其他受保护的单元格,所以我不能简单地删除所有保护,然后继续 - 我需要能够删除这一个,特别是,从那里去 . 由于被锁定的单元格范围将不断变化,我需要能够让脚本专门查找这一个范围 .

任何想法都表示赞赏!

1 回答

  • 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方法的文档 . 请注意,使用命名范围执行所有操作可能会更好,您可以使用与保护相同的方式获取和更新 .

相关问题