Google apps script 如何保护工作表,然后取消对特定单元格的保护
我已经创建了一个脚本,可以在谷歌首页的开头运行。脚本取消对整个工作表的保护,然后保护除当前日期行以外的所有工作表。这个脚本正是我想要的,但我觉得它太麻烦和耗时了 有没有一种方法可以保护整个工作表,然后只取消对少数范围的保护,而不是保护一大堆特定范围。就脚本运行时间而言,这似乎效率更高 我唯一的问题是,当我试图取消对特定范围的保护时,代码会抛出一个错误Google apps script 如何保护工作表,然后取消对特定单元格的保护,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我已经创建了一个脚本,可以在谷歌首页的开头运行。脚本取消对整个工作表的保护,然后保护除当前日期行以外的所有工作表。这个脚本正是我想要的,但我觉得它太麻烦和耗时了 有没有一种方法可以保护整个工作表,然后只取消对少数范围的保护,而不是保护一大堆特定范围。就脚本运行时间而言,这似乎效率更高 我唯一的问题是,当我试图取消对特定范围的保护时,代码会抛出一个错误 Cannot find method setUnprotectedRanges(Range) 此处的代码片段: var sheet = Spre
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);
var sheet=SpreadsheetApp.getActiveSheet();
//删除电子表格中的所有范围保护
var保护=sheet.getProtections(电子表格app.ProtectionType.RANGE);
对于(变量i=0;i<0.length;i++){
无功保护=保护[i];
保护。移除();
}
var保护=sheet.protect();
//将编辑器限制为所有者
protection.getRange().getA1Notation();
var-eds=protection.getEditors();
保护。删除编辑器(eds);
//设置不受保护的范围
var range1=sheet.getRange(“A2:L2”);
保护。设置未保护的范围(范围1);
var range1=sheet.getRange(“A4:C4”);
保护。设置未保护的范围(范围1);
有什么建议吗
加里这次修改怎么样 修改点:
- 当它添加不受保护的范围时,请将其作为数组添加
//设置不受保护的范围的部分,如下所示
//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);
参考:
如果这不是你想要的,请告诉我。我想修改它