#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 Спасибо за ответ. Приношу свои извинения за доставленные неудобства. Из вашего ответа я обновил свой ответ. Не могли бы вы подтвердить это? Если это не было прямым решением вашей проблемы, я приношу свои извинения.