Как защитить данные с помощью условий?

#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 Спасибо, что ответили. Я рад, что ваш вопрос был решен.