取消保护受保护 Sheet 中的范围

Unprotect a range in a Protected Sheet

我有一个受保护的作品sheet,其中有 7 个未受保护的范围例外。我想从 sheet 上的另一个范围(一个单元格)中移除保护,总共 8 个未受保护的范围。我已经在 SO 中阅读了几个示例,但到目前为止 none 似乎有效。

这是我的代码

    var ss=SpreadsheetApp.openById('id'); // get sheet
    ss.getSheetByName('Sheet1').getRange(4,2,1,1).protect().remove(); //get and remove protection on cell
    ss.getSheetByName('Sheet1').getRange(5,2,1,1).setValue('Code ran'); //confirm code ran

如您所见,我运行一行确认代码为运行,确实如此。但保护并未从单元格范围 4,2,1,1 中移除。

显然,我遗漏了一些东西。

谢谢。

尝试以下脚本:

function myfunction()
{
  var ss=SpreadsheetApp.openById('ID'); // get sheet
  var range = ss.getSheetByName('Sheet1').getRange(4,2,1,1); // gets the specific range you are trying to unprotect.
  ss.getSheetByName('Sheet1').protect().setUnprotectedRanges([range]); //adds the exception to the current protection.
  ss.getSheetByName('Sheet1').getRange(5,2,1,1).setValue('Code ran'); //confirm code ran
}

在 运行 之后,异常应该如下所示:

在我的例子中,我从 A1 保护到 C12 进行测试。

参考: