Ошибка при запуске onEdit (e) для запуска для определенного диапазона листов - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно ограничить функцию onEdit(), чтобы срабатывать только тогда, когда изменения сделаны в пределах определенного диапазона. Пользователь выбирает значение в столбце B, а столбец A заполняется определенным значением. Хотя приведенная ниже функция, кажется, работает должным образом, при запуске из редактора приложений она выдает ошибку:
TypeError: Cannot read property "source" from undefined.

что, по-видимому, относится к e.source.getSheetName строке

function onEdit(e) {

  if (
    e.source.getSheetName() == "Activity" &&
    e.range.columnStart == 2 &&
    e.range.columnEnd == 2 &&
    e.range.rowStart >= 2 &&
    e.range.rowEnd <= 100
  ) {
    e.value !=='' ? e.range.offset(0,-1).setValue(caseID()) : null
    };
  };

Я не уверен, что это можно игнорировать, так как функция работает (вставляет результат функции caseID в столбец A, когда значение изменяется в столбце B) ? Заранее спасибо,

Ответы [ 2 ]

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

Я считаю, что getSheetName () возвращает только имя первого листа вместо имени отредактированного листа.Чтобы получить правильное отредактированное имя листа, вы должны сначала получить лист, а затем его имя.Кроме того, это предпочтительно делать из диапазона, а не из источника:

e.range.getSheet().getName() === "Activity"
1 голос
/ 08 марта 2019

Краткий ответ: Полагаю, мы можем пока игнорировать это.

Причина: Когда мы запускаем эту функцию вручную в редакторе приложений, мы не передаемобъект события.Вот почему он выдает e как undefined ошибку.

Я думаю, мы можем интерпретировать запуск этой функции вручную как запуск onEdit(), тогда как сигнатура функции требует аргумента e.Вот почему e не определяется при выполнении вручную.

Но когда он запускается из-за редактирования на листе, этот объект события передается функции в качестве аргумента и, следовательно, работает как ожидалось.

...