【问题标题】:How to search for and delete named protected range in Google Sheets?如何在 Google 表格中搜索和删除命名的受保护范围?
【发布时间】:2016-05-01 23:57:01
【问题描述】:

我正在 Google 表格中编写一个脚本,该脚本选择性地锁定一大块单元格,并且每天都需要在同一受保护范围内再包含一行单元格。

到目前为止,该脚本正在工作,在定位需要保护的行并在每次运行时创建一个新的受保护范围 - 但是每次运行时(我想在打开状态)它都会创建另一个受保护的范围范围,一个,另一个。我已将受保护范围命名为“历史记录”,但我无法找到一种方法,以便在下次运行时仅取消对该范围的保护,然后再保护一个新范围。

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

感谢任何想法!

【问题讨论】:

  • 你努力了吗?
  • 努力?是的 - 我一直在试图弄清楚,但由于这是我第一次用工作表或谷歌脚本做任何事情,我觉得很难。我认为这是一个寻求帮助的地方......

标签: google-sheets protection


【解决方案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 方法的文档。请注意,使用命名范围执行所有这些操作可能会更好,您可以像保护一样获取和更新这些范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 2016-11-27
    • 1970-01-01
    相关资源
    最近更新 更多