Я делюсь электронной таблицей с коллегами на двух листах «Мои настоящие проекты», «Новые проекты», и я хотел бы заблокировать эти листы, открыв (более или менее работ), но мне нужно оставить ячейку A3 свободной для изменений, в A3 - это выпадающее меню, если пользователь выбирает один элемент из списка, он открывает следующие три ячейки, если пользователь удаляет значение из ячейки A3, он снова блокирует 3 ячейки. Ниже приведен код, я действительно сумасшедший (провел 5 часов). Я вижу, что заблокированные диапазоны изменились как владелец, но другие не видят никаких изменений. Не могли бы вы мне помочь. Thx
function onOpen(e) {
var myActualProjectsSheet = SpreadsheetApp.getActiveSheet();
var myActualProjectsProtection = myActualProjectsSheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
for (var j = 0, jLen = myActualProjectsProtection.length; j < jLen; j++) {
myActualProjectsProtection[j].remove();
}
var newProjectsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('New projects');
var newProjectsProtection = newProjectsSheet.protect();
var newProjectsUnprotected = newProjectsSheet.getRange('A3');
newProjectsProtection.setUnprotectedRanges([newProjectsUnprotected]);
newProjectsProtection.removeEditors(newProjectsProtection.getEditors());
var myActualProjectsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('My actual projects');
var myActualProjectsProtection = myActualProjectsSheet.protect();
var myActualProjectsUnprotected = myActualProjectsSheet.getRange('A3');
myActualProjectsProtection.setUnprotectedRanges([myActualProjectsUnprotected]);
myActualProjectsProtection.removeEditors(myActualProjectsProtection.getEditors());
}
function onEdit(e){
var myActualProjectsSheet = SpreadsheetApp.getActiveSheet();
var Protection = myActualProjectsSheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
var myActualProjectsUnprotected1 = myActualProjectsSheet.getRange('A3');
var myActualProjectsUnprotected2 = myActualProjectsSheet.getRange('A17');
var myActualProjectsUnprotected3 = myActualProjectsSheet.getRange('A19');
var myActualProjectsUnprotected4 = myActualProjectsSheet.getRange('A21');
for (var j = 0, jLen = Protection.length; j < jLen; j++) {
Protection[j].remove();
}
var myActualProjectsProtection = myActualProjectsSheet.protect();
if(SpreadsheetApp.getActiveSpreadsheet().getSheetByName('My actual projects').getRange('A3').getValue() != ''){
myActualProjectsProtection.setUnprotectedRanges([myActualProjectsUnprotected1,myActualProjectsUnprotected2,myActualProjectsUnprotected3,myActualProjectsUnprotected4]);
}
else{
myActualProjectsProtection.setUnprotectedRanges([myActualProjectsUnprotected1]);
}
myActualProjectsProtection.removeEditors(myActualProjectsProtection.getEditors());
}