Использование onEdit (e) для обновления ячеек при добавлении нового значения - PullRequest
0 голосов
/ 07 марта 2019

Часть кода, над которой я работаю, состоит из двух функций - generateID и onEdit(e).generateID - генерирует число по шаблону и работает нормально.onEdit(e) - это проблема, с которой я сталкиваюсь.

В столбце A электронной таблицы пользователь выбирает значение из раскрывающегося списка (изначально столбец A пусто, диапазон от строки 2 до getLastRow(), строка 1 для заголовка).После выбора значения мне нужно вставить результат generateID в следующий столбец B той же строки.Если значение в coumn A затем изменяется (выбирается из выпадающего списка), мне нужно generateID, чтобы обновить его значение.

Вот что я пробовал до сих пор:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getSheetByName("TEMP");
  var range = activeSheet.getRange(2, 1, activeSheet.getLastRow(), 1).getValues(); 

  for (var i =0; i < range.length; i ++) {
    if (e.range [i][0] !== "") {
       activeSheet.getRange(i + 2, 2, 1, 1).setValue(generateID());
    };
  };
};

OnEdit, кажется, является правильным выбором для просмотра изменений в диапазоне.С (е) код, кажется, не работает вообще.Попытка сделать это как onEdit() работает, но неправильно.Оцените любую помощь по этому вопросу.Спасибо.

1 Ответ

1 голос
/ 07 марта 2019

e.range возвращает объект range, а не массив 1 . Попробуйте это вместо вашего кода:

e.value !=='' ? e.range.offset(0,1).setValue(generateID()) : null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...