我创建了一个在打开GoogleSheet时运行的脚本。该脚本取消保护整个工作表,然后保护当前日期所在行以外的所有内容。该脚本完全可以实现我想要的功能,但是在我看来,它太麻烦且耗时。
除了保护整个特定范围之外,还有一种方法可以保护整个工作表,然后仅取消保护几个范围。就脚本运行时间而言,这似乎更为有效。
我唯一的问题是,当我尝试取消保护特定范围时,代码将引发错误。
Cannot find method setUnprotectedRanges(Range)
代码段在这里:
var sheet = SpreadsheetApp.getActiveSheet();
// Remove all range protections in the spreadsheet
var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
protection.remove();
}
var protection = sheet.protect();
//restrict editors to owner
protection.getRange().getA1Notation();
var eds = protection.getEditors();
protection.removeEditors(eds);
//set unprotected ranges
var range1 = sheet.getRange("A2:L2");
protection.setUnprotectedRanges(range1);
var range1 = sheet.getRange("A4:C4");
protection.setUnprotectedRanges(range1);
有什么建议吗?
加里
答案 0 :(得分:0)
此修改如何?
请如下修改//set unprotected ranges
的部分。
//set unprotected ranges
var range1 = sheet.getRange("A2:L2");
var range2 = sheet.getRange("A4:C4");
protection.setUnprotectedRanges([range1, range2]);
如果要将新范围添加到现有不受保护的范围,请使用以下脚本。
var ranges = protection.getUnprotectedRanges();
var range1 = sheet.getRange("A2:L2");
var range2 = sheet.getRange("A4:C4");
ranges.push(range1);
ranges.push(range2);
protection.setUnprotectedRanges(ranges);
如果这不是您想要的,请告诉我。我想修改它。