У меня есть следующие функции.Первая, lastRowF
, находит последнюю строку в столбце, который вы ей предоставили.Работает отлично.
//Finds last row in a given column
function lastRowF(column) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
return lastRow;
}
Второй, lastColF
, делает то же самое, но для столбцов в данной строке.Или, по крайней мере, так и должно быть.
//Finds last column in a given row
function lastColF(row) {
var lastCol = SpreadsheetApp.getActiveSheet().getMaxColumns();
// var values = SpreadsheetApp.getActiveSheet().getRange("A" + row + ":" + colLetter(lastCol) + row).getValues();
var values = SpreadsheetApp.getActiveSheet().getRange("A2:AB2").getValues();
for (; values[lastCol - 1] == "" && lastCol > 0; lastCol--) {}
return colLetter(lastCol);
}
Как таковая, функция просто возвращает lastCol
, как было объявлено изначально.Циклы for
немедленно завершаются.
Я определил, что проблема values
, но я не могу понять ПОЧЕМУ, и это сводит меня с ума.Массив заполняется правильно - msgBox(values)
перечисляет все значения в строке - но попытка вызвать отдельное значение просто возвращает неопределенное значение.Это не имеет никакого смысла для меня, потому что проверка всего массива и отдельных значений в lastRowF
работает отлично.