[google-apps-script] Determining the last row in a single column

I tried to write up 3 following functions, you can test them for different cases of yours. This is the data I tested with:

enter image description here

Function getLastRow1 and getLastRow2 will return 0 for column B Function getLastRow3 will return 1 for column B

Depend on your case, you will tweak them for your needs.

function getLastRow1(sheet, column) {
  var data = sheet.getRange(1, column, sheet.getLastRow()).getValues();

  while(typeof data[data.length-1] !== 'undefined'
     && data[data.length-1][0].length === 0){ 
    data.pop();
  }
  return data.length;
}

function test() {
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet6');
  Logger.log('Cách 1');
  Logger.log("Dòng cu?i cùng c?a c?t A là: " + getLastRow1(sh, 1));
  Logger.log("Dòng cu?i cùng c?a c?t B là: " + getLastRow1(sh, 2));
  Logger.log("Dòng cu?i cùng c?a c?t C là: " + getLastRow1(sh, 3));
  Logger.log("Dòng cu?i cùng c?a c?t D là: " + getLastRow1(sh, 4));
  Logger.log("Dòng cu?i cùng c?a c?t E là: " + getLastRow1(sh, 5));
  Logger.log('Cách 2');  
  Logger.log("Dòng cu?i cùng c?a c?t A là: " + getLastRow2(sh, 1));
  Logger.log("Dòng cu?i cùng c?a c?t B là: " + getLastRow2(sh, 2));
  Logger.log("Dòng cu?i cùng c?a c?t C là: " + getLastRow2(sh, 3));
  Logger.log("Dòng cu?i cùng c?a c?t D là: " + getLastRow2(sh, 4));
  Logger.log("Dòng cu?i cùng c?a c?t E là: " + getLastRow2(sh, 5));
  Logger.log('Cách 3');
  Logger.log("Dòng cu?i cùng c?a c?t A là: " + getLastRow3(sh, 'A'));
  Logger.log("Dòng cu?i cùng c?a c?t B là: " + getLastRow3(sh, 'B'));
  Logger.log("Dòng cu?i cùng c?a c?t C là: " + getLastRow3(sh, 'C'));
  Logger.log("Dòng cu?i cùng c?a c?t D là: " + getLastRow3(sh, 'D'));
  Logger.log("Dòng cu?i cùng c?a c?t E là: " + getLastRow3(sh, 'E'));

}

function getLastRow2(sheet, column) {
  var lr = sheet.getLastRow();
  var data = sheet.getRange(1, column, lr).getValues();

  while(lr > 0 && sheet.getRange(lr , column).isBlank()) {
    lr--;
  }

  return lr;
}

function getLastRow3(sheet, column) {
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange(column + lastRow);
  if (range.getValue() !== '') {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  } 
}