#google-apps-script #google-sheets
Вопрос:
У меня есть код :
function Lock(){
var sh = SpreadsheetApp.openById(ssID).getSheetByName('SheetName');
var protection = sh.protect().setDescription('DATA');
var me = Session.getEffectiveUser();
protection.addEditor(me).setUnprotectedRanges(sh.getRange("F2:F").createTextFinder("^(?!OK!).*$").matchEntireCell(true).useRegularExpression(true).findAll().map(r => r.offset(0, 0, 1, 2)));
protection.removeEditors(protection.getEditors());
if (protection.canDomainEdit()){
protection.setDomainEdit(false);
}
}
Этот код отлично работает. Это защитит строку, если столбец F:F имеет правильное значение OK!
. И теперь я хочу, чтобы он защищал, если значение OK!
или Failed!
.createTextFinder("^(?!OK!).*$")
Где я должен его изменить? я пытался ||
, но не могу. Спасибо!
Ответ №1:
В таком случае, как насчет следующей модификации?
От:
protection.addEditor(me).setUnprotectedRanges(sh.getRange("F2:F").createTextFinder("^(?!OK!).*$").matchEntireCell(true).useRegularExpression(true).findAll().map(r => r.offset(0, 0, 1, 2)));
Для:
protection.addEditor(me).setUnprotectedRanges(sh.getRange("F2:F").createTextFinder("^(?!(OK!|Failed!)).*$").matchEntireCell(true).useRegularExpression(true).findAll().map(r => r.offset(0, 0, 1, 2)));
и
protection.addEditor(me).setUnprotectedRanges(sh.getRange("F2:F").createTextFinder("^(?!OK!)(?!Failed!).*$").matchEntireCell(true).useRegularExpression(true).findAll().map(r => r.offset(0, 0, 1, 2)));
- В этой модификации
^(?!OK!).*$
изменяется на^(?!(OK!|Failed!)).*$
и^(?!OK!)(?!Failed!).*$
.
Комментарии:
1. Еще раз спасибо, ха-ха, я просто подумал, что это сработает с
||
2. @Leti Спасибо, что ответили. Я рад, что ваш вопрос был решен.