Что-то вроде ниже должно начать вас.По сути, защитить вещи в Apps Script легко;Снятие защиты более утомительно.По этой причине я бы рекомендовал добавить описание к рассматриваемому защищенному диапазону (как я сделал с «Test1»), после чего приведенный ниже цикл с легкостью найдет и удалит его.
Я прикрепил его к этой демонстрационной электронной таблице , поэтому у вас есть контекст с данными, с которыми я работал.
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheets()[0]; // 0 == first sheet.
var ee = event.source.getActiveRange().getA1Notation();
if (ee == "A2") { // Check if edited cell is the one we're watching.
if (event.value == "yes"){ // If the value == "yes", do stuff.
var protections = sh.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
if (protections[i].getDescription() == 'Test1') { // If protection description == "Test1"...
protections[i].remove(); // then remove protection.
}
}
}
}
}
function setProtected(){
// Sets the desired range to protected with "Test1" description for demonstration.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getSheets()[0];
var protectedRows = sh.getRange("C2:C11");
protectedRows.protect().setDescription("Test1");
}