Namokonov

Untitled

Oct 19th, 2021 (edited)
454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*обновляем таблицу по ключу скриптом onEdit(e)
  2.  
  3. привет, ребята! недавно в наш чат пришла Кира с вопросом: есть таблица, имена и номера договоров, каждому имени соответствует один номер договора, как автоматически менять номер по выбранному имени?
  4.  
  5. задача для простого скрипта, чтобы было интересно – покажем, как её решить с помощью триггера onEdit (того самого, который не нужно запускать, который реагирует на все изменения Таблицы)*/
  6.  
  7. function onEdit(e) {
  8.   //определяем лист, который редактируется и диапазон
  9.   let sheet = e.source.getActiveSheet();
  10.   let range = e.range;
  11.  
  12.   //проверяем, редактируется ли ячейка "H2" на "ЛистЛист"
  13.   if (range.getA1Notation() == 'H2' && sheet.getName() == 'ЛистЛист') {
  14.     //ЕСЛИ ДА
  15.     //забираем ключ и новое значение из "F2:G2"
  16.     let [key, new_value] = sheet.getRange("F2:G2").getValues()[0];
  17.  
  18.     //определяем рабочий диапазон таблицы с данными
  19.     let range = sheet.getRange("A1:B100");
  20.  
  21.     //забираем данные из "A1:B100"
  22.     let values = range.getValues();
  23.  
  24.     //с помощью map пересобираем массив,
  25.     //если ключу соответствует значение в первом столбце диапазона – возвращаем новое значение
  26.     //если не соответствует - возвращаем значение, которое было
  27.     values = values.map(row => [row[0], row[0] == key ? new_value : row[1]]);
  28.  
  29.     //вставляем обновленный массив на его законное место
  30.     range.setValues(values);
  31.   }
  32. }
Add Comment
Please, Sign In to add comment