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

Я создал скрипт, который запускается при открытии GoogleSheet.Сценарий снимает защиту всего листа, а затем защищает все, кроме строки текущей даты.Сценарий выполняет именно то, что я хочу, но мне пришло в голову, что он слишком громоздок и отнимает много времени.

Вместо защиты целого ряда определенных диапазонов, есть способ защитить весь лист, а затем снять защитутолько несколько диапазонов.Это может показаться намного более эффективным в отношении времени выполнения скрипта.

Моя единственная проблема в том, что когда я пытаюсь снять защиту с определенных диапазонов, код выдает ошибку.

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); 

Любое предложение?

Гари

1 Ответ

0 голосов
/ 14 декабря 2018

Как насчет этой модификации?

Точка модификации:

  • Когда добавляется незащищенный диапазон, добавьте их как массив.

Измененоскрипт:

Пожалуйста, измените часть //set unprotected ranges следующим образом.

//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);

Ссылка:

Если это не то, что вы хотите, пожалуйста, сообщите мне.Я хотел бы изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...