добрый день! У меня есть несколько листов с 1 защитой каждый, и я хочу l oop среди этих листов и добавить или удалить редакторы в их защитах.
Изначально у меня есть этот код:
function AddOrRemove() {
var spreadsheet = SpreadsheetApp.getActive();
var allProtections = spreadsheet.getActiveSheet().getProtections(SpreadsheetApp.ProtectionType.SHEET);
var protection = allProtections[0];
protection.removeEditors(['email1@gmail.com']);
protection.addEditors(['email2@gmail.com']);
};
Это удаляет email1@gmail.com
, в то время как добавляет email2@gmail.com
к ActiveSheet
, что означает, что мне нужно вручную go к каждому листу и запустить его оттуда. Тем не менее, я хочу автоматизировать зацикливание листов, и поэтому придумаю следующий код:
function AddOrRemove() {
var sheets = ["Sheet1","Sheet2","Sheet3","Sheet4","Sheet5","Sheet6","Sheet7","Sheet8","Sheet9","Sheet10"];
for (var i = 0 ; i = 15 ; i++){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheets[i]);
var allProtections = spreadsheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
var protection = allProtections[0];
protection.removeEditors(['email1@gmail.com']);
protection.addEditors(['email2@gmail.com']);
}
};
, где sheets
- все имена листов, к которым я хочу запустить код. Тем не менее, при попытке запустить его, я сталкиваюсь с этой ошибкой:
TypeError: Cannot call method "getProtections" of null. (line 5, file "AddOrRemoveEditors")
Я пытался Logger.log(sheets[i]);
непосредственно перед var Spreadsheets
в for для l oop, и он записывает "ноль". Однако, когда я ставлю Logger.log(sheets[0]);
перед для l oop, он корректно возвращает K. Я не совсем уверен, чего здесь не хватает. Я чувствую, что логика c за кодом должна работать, но, возможно, я что-то упустил. Просить совета по этому вопросу. Спасибо!