Как оптимизировать мой код, чтобы он блокировал все ячейки? - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь использовать Google лист для записи данных и проверки.Например, данные о человеке A вводятся в A1: C1, а затем, когда человек D помечает флажок в D1, он блокирует A1: C1, чтобы предотвратить повторное редактирование человеком A.Этот процесс будет повторяться для каждой строки.

Мне удалось заставить код работать.Но иногда кажется, что когда человек B быстро ставит флажок, код может пропустить одну или две строки и не блокировать каждую строку.Например, когда человек B помечает D1, D2 и D3, система блокирует только 1 и 3 ряд.

Как оптимизировать код, чтобы он всегда блокировал каждую строку, не пропуская одну или две?

function onEdit(e){

  var row = e.range.getRow();
  var col = e.range.getColumn();
  var range = sheet.getRange(row, 1, 1,3)
  var protectSs = range.protect().setDescription('Protect row ' + row);  
  var a = sheet.getRange(row,4,1,1).getValues();

  if (col == 4){ 
    if (a == "true") {

      var me = Session.getEffectiveUser();
      protectSs.addEditor("guest1@gmail.com");
      protectSs.removeEditor("guest1@gmail.com");
      Logger.log(me);
     }

     else if (a == "false") {

      protectSs.addEditor("guest1@gmail.com");
      protectSs.removeEditor("guest1@gmail.com");

     }
   }
}

1 Ответ

0 голосов
/ 03 мая 2019

Попробуйте это:

Сначала установите флажки в столбце 4, удаляя любые другие возможные записи в этом диапазоне. Затем попробуйте этот скрипт.

function onEdit(e){
  var rg=sheet.getRange(e.range.rowStart,1, 1,3)
  var protectSs=range.protect().setDescription('Protect row ' + e.range.rowStart);  
  if (e.range.columnStart==4){ 
    if (e.value=="TRUE") {
      protectSs.addEditor("guest1@gmail.com");
      protectSs.removeEditor("guest1@gmail.com");
     }
     else {
      protectSs.addEditor("guest1@gmail.com");
      protectSs.removeEditor("guest1@gmail.com");
     }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...