защитить / снять защиту диапазона, если конкретная ячейка была изменена на определенное значение - PullRequest
0 голосов
/ 10 июня 2018

Я хочу сделать определенный диапазон неизменным.но если конкретная ячейка изменилась с «нет» на «да», то диапазон должен быть изменяемым.и если конкретная ячейка изменилась с «да» на «нет», то диапазон снова не должен изменяться.

Как я могу понять это в скрипте приложения googe?

Спасибо за помощь.

1 Ответ

0 голосов
/ 10 июня 2018

Что-то вроде ниже должно начать вас.По сути, защитить вещи в 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...