Я узнал из [этого вопроса] ( Автоматическая блокировка / защита строк / ячеек в Google Sheets в определенное время в других ячейках ) о том, как заблокировать определенные ячейки при определенных условиях, и ответ Джесс работает отлично. ,
Мне просто интересно, могу ли я добавить больше кодов, чтобы разблокировать ячейки и при определенных условиях. Например, если пользователи делают вещь 1, заблокируйте ячейку В1, если пользователи делают вещь 2, разблокируйте ячейку В1 для будущего редактирования.
Здесь код, который я пересмотрел, основываясь на ответе Джесса, блокировка (removeEditor) работает нормально, но условие «иначе, если», которое я добавил, чтобы разблокировать ячейку, не сработало, и ячейки НЕ разблокируются при условии.
Любая помощь будет принята с благодарностью !!
function onEdit(e) {
var ss1=SpreadsheetApp.getActiveSpreadsheet();
var sheet1=ss1.getSheetByName("Sheet Name");
var active = sheet1.getActiveCell();
var nextnum = sheet1.getRange(active.getRow(),8).getValue();
var shouldbeblocking= sheet1.getRange(active.getRow()-1,7)
var them = Session.getActiveUser();
var theiremails = them.getEmail();
// to unlock the cell, NOT WORKING
if (nextnum == 22) {
shouldbeblocking.protect().addEditor(theiremails);
shouldbeblocking.setNote("unLocked") ;
}
// to lock the cell (codes working fine)
else if (nextnum == 1) {
shouldbeblocking.protect().removeEditor("xxx@xxx.com") ;
shouldbeblocking.setNote("Locked") ;
}
}
Согласно предложению @ ross, я добавил Logger.log в свой код (в операторе if), а ниже - скриншот транскрипта выполнения, кажется, что код проходит через оператор if и, как ни странно, «разблокирован» "setNote работает, потому что я могу видеть" разблокированную "заметку на ячейке, но эта ячейка все еще заблокирована: