Мне нужно было получить значение последней строки столбцов K, M, N, O, V, где значение L = e и вставить в столбцы B:F после последних данных.
function copyValues(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow();
var values = [];
for (var i = lastRow; i > 0; i--) {
if (sheet.getRange("L" + i).getValue() == e) {
var sourceRange = sheet.getRange("K" + i + ":V" + i);
values = sourceRange.getValues()[0];
break;
}
}
// Вставить значения в ячейки
var lastFill = getLastFill("B:B");
yourFunction(lastFill);
var targetRange = sheet.getRange("B" + (lastFill + 1) + ":F" + (lastFill + 1));
targetRange.setValues([[values[0], values[2], values[3], values[4], values[11]]]);
}
function getLastFill(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var column = sheet.getRange(e).getValues();
for (var i = column.length - 1; i >= 0; i--) {
if (column[i][0] !== "") {
return i + 1; // Возвращаем номер строки (+1 для приведения к номерации Google Таблиц)
}
}
}
Данный код работает, но выполняет запрос в течении ~7 секунд. Можно ли как-нибудь увеличить скорость?