Как искать и удалять именованный защищенный диапазон в Google Sheets?
Я пишу сценарий в Google Sheets, который выборочно блокирует большой блок ячеек, и каждый день необходимо включать еще один ряд ячеек в тот же защищенный диапазон.
Сценарий работает до сих пор, с точки зрения поиска строк, которые нуждаются в защите, и создания нового защищенного диапазона при каждом его запуске - однако каждый раз, когда он запускается (который я хочу использовать onOpen), он создает другой защищенный диапазон, и еще и еще. Я назвал защищенный диапазон "История", но я не могу найти способ при следующем запуске снять защиту только с этого диапазона, а затем защитить новый диапазон.
На листе есть другие защищенные ячейки, поэтому я не могу просто удалить все защиты и затем продолжить - мне нужно иметь возможность удалить только эту, в частности, и перейти оттуда. Поскольку диапазон блокируемых ячеек будет постоянно изменяться, мне нужно, чтобы скрипт мог специально искать этот диапазон.
Любые идеи приветствуются!
1 ответ
Чтобы обновить существующую защиту, сначала нужно ее "получить". Я не могу найти простой способ сделать это напрямую, но вы можете получить все средства защиты на листе (или во всей электронной таблице) и просмотреть их, чтобы найти тот, который вам нужен.
var protections = ws.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var p in protections) {
if (protections[p].getDescription() == 'History') {
var protection = protections[p];
break;
}
}
Теперь вы можете использовать protection.setRange
Способ обновления своего ассортимента без создания новой защиты:
var rangeNew = ws.getRange('A1:C3');
protection.setRange(rangeNew);
Вот документация для методов getProtectionsType листа и setRange защиты. Обратите внимание, что может быть даже лучше сделать все это с именованными диапазонами, которые вы можете получать и обновлять так же, как средства защиты.