- Вы хотите получить номер последней строки для каждого столбца на листе.
Если мое понимание вашего вопроса правильное, как насчет этого ответа?Я думаю, что есть несколько решений для вашей ситуации.Поэтому, пожалуйста, подумайте о них как о трех из них.
Шаблон 1:
В этом примере сценария он извлекает последнюю строку определенного столбца, давая букву столбца.В качестве примера извлекается последняя строка столбца «С».
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
var col = "C"; // Please input the column letter.
var res = sheet.getRange(col + ":" + col).getValues().filter(String).length;
Logger.log(res)
Когда этот скрипт используется для вашей таблицы образцов, возвращается 4.
Шаблон 2:
В этом примере сценария извлекаются последние строки всех столбцов.Сначала извлекаются все значения ячеек.Затем массив, включающий значения, транспонируется, и последние строки извлекаются.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
var values = sheet.getDataRange().getValues();
var res = values[0].map(function(_, i) {return values.map(function(r) {return r[i]}).filter(String).length});
Logger.log(res)
Когда этот скрипт используется для вашей таблицы примеров, возвращается массив [2.0, 3.0, 4.0]
.В этом случае индекс массива означает индекс столбца.Таким образом, в этом случае последние строки столбцов «A», «B» и «C» означают 2, 3 и 4 соответственно.
Pattern 3:
Pattern 1 и 2Можно использовать для листа, что все ячейки столбца заполнены значениями.Из вашей таблицы примеров, я предложил выше 2 модели.Но если вы хотите получить последнюю строку столбца, включая пустые ячейки, вы можете использовать скрипт, как показано ниже.
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheets()[0];
var col = "C";
var values = sheet.getRange(col + ":" + col).getValues();
var lastRow;
for (var i = values.length - 1; i >= 0; i--) {
if (values[i][0]) {
lastRow = i + 1;
break;
}
}
Logger.log(lastRow)
Ссылки:
Если я неправильно понял ваш вопрос, пожалуйста, сообщите мне.Я хотел бы изменить его.