Поместите данные в следующую пустую строку, выбрав неправильный столбец

#google-apps-script #google-sheets

#google-приложения-скрипт #google-sheets

Вопрос:

Я уверен, что это просто, но я пытаюсь заставить его вставить данные в столбец U первой пустой ячейки. В настоящее время он вставляется в столбец A, начиная с ячейки A28.

 function Update() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getRange("U:U").getValues();
  var maxIndex = values.reduce(function(maxIndex, row, index) {
  return row[0] === "" ? maxIndex : index;
  }, 0);
  sheet.setActiveRange(sheet.getRange(maxIndex   2, 1));
  sheet.getRange('L28:S').copyTo(sheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
 

Ответ №1:

Я полагаю, что ваша цель заключается в следующем.

  • Вы хотите поместить значения в первый пробел столбца «U» в качестве целевого диапазона.
  • Диапазон источников таков L28:S .

Точки модификации:

  • В вашем скрипте диапазон назначения sheet.getRange(maxIndex 2, 1) равен . При этом значения копируются в столбец «А». Я думаю, что это причина вашей проблемы.
  • В вашей ситуации я подумал, что getNextDataCell это можно было бы использовать.

Когда ваш скрипт модифицируется, он становится следующим.

Модифицированный скрипт:

 function Update() {
  var sheet = SpreadsheetApp.getActiveSheet();

  // I modified below script.
  var range = sheet.getRange("U1:U"   sheet.getLastRow());
  var temp = range.getNextDataCell(SpreadsheetApp.Direction.DOWN);
  var destRange = temp.getRow() == sheet.getMaxRows() amp;amp; sheet.getRange("U1").isBlank() ? sheet.getRange("U1") : temp.offset(1, 0);
  // destRange.activate();  // When you use this line, the start of copy is activated.
  sheet.getRange('L28:S').copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
 

Ссылка:

Комментарии:

1. Спасибо @Tanaike, я попробовал, но получаю следующую ошибку: «Координаты целевого диапазона находятся за пределами размеров листа».

2. @Curtis Humphreys Спасибо за ответ. Приношу свои извинения за доставленные неудобства. Из вашего ответа я обновил свой ответ. Не могли бы вы подтвердить это? Если это не было прямым решением вашей проблемы, я приношу свои извинения.