Ошибка появляется только при запуске скрипта в редакторе скриптов приложений - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь запустить скрипт, который автоматически заполняет дату в столбце F при каждом вводе или изменении данных в столбце E в электронной таблице с несколькими листами.

В настоящее время у меня есть скрипт, который был написан для меня на основе того, что я описал, но я получал код ошибки.Я вернулся к своему первоначальному вопросу и объяснил, что этот скрипт необходим для запуска на одном листе в электронной таблице с несколькими листами.Он дал мне некоторую дополнительную информацию, но это был его последний ответ: «Да, вам нужно заменить event.source.getActiveSheet() на что-то вроде« getsheetbyname ». Я перепробовал все, что мне известно, чтобы работать с тем, что он мне дал, но япо-прежнему получаю код ошибки независимо от того, что я пытаюсь.

Вот область, которая дает мне ошибку.

var sheet = event.source.getsheetbyname();

Вот код ошибки, который я получаю

TypeError: Невозможно прочитать свойство "source" из undefined. (Строка 2, файл "Code")

Я знаю, что должно быть имя листа, который я хочусценарий для запуска, но я не знаю, как его кодировать, чтобы сделать это. Имя листа "Веса несовершеннолетних"

Ожидаемые результаты должны быть, когда я добавляю или изменяю данные в столбце E, это должноавтоматически заполняет текущую дату в соседнюю ячейку в соседнем столбце.

Когда я сохраняю сценарий, а затем запускаю сценарий, чтобы убедиться, что он работает, конечно, он выдает ошибку coде я описал выше.Затем, когда я возвращаюсь на этот лист после сохранения сценария вместо автоматического заполнения даты, теперь, когда я выделяю строку ячеек в строке, она заменяет все последующие ячейки на ту же информацию, что и в первой ячейке, которую я начал выделять.,Очень странно!

Сценарий + код ошибки:

enter image description here

Код:

function onEdit(event) { 
  var sheet = event.source.getActiveSheet();

  // note: actRng = the cell being updated
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

  if (cindex == 5) { // 1 == Column A, 2 == Column B, 3 == Column C, etc.
   var dateCol = sheet.getLastColumn();  
   var lastCell = sheet.getRange(index,dateCol);
   var date = Utilities.formatDate(new Date(), "EST", "MMM-dd-yyyy");
   lastCell.setValue("'" + date);
  }
}

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Я считаю, что это делает то же самое:

function onEdit(e) { 
  var sheet = e.range.getSheet();
  if (e.range.columnStart == 5) {
    sheet.getRange(e.range.rowStart,sheet.getLastColumn()).setValue("'" + Utilities.formatDate(new Date(), "EST", "MMM-dd-yyyy HH:mm:ss"));
  }
}
0 голосов
/ 09 апреля 2019

Есть ли причина, по которой вы не используете SpreadsheetApp.getActiveSheet().getSheetByName("Juvenile weights");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...