서비스
home

특정 열의 가장 마지막 행 번호와 그 값 불러오기

목적

구글 앱스 스크립트로 가장 마지막 행 번호를 구하는 방법을 이해합니다.
구글 앱스 스크립트로 가장 마지막 행의 값을 구하는 방법을 이해합니다.

가장 마지막 행 번호를 구하는 방법

가장 마지막 행 번호를 구할 필요성?

앱스 스크립트에는 sheet.getLastRow() 가 있어서 한 시트의 가장 마지막 행 번호를 구하는 간단한 메소드가 존재합니다.
하지만 실제 개발을 하다보면 필요한 것은 특정한 열의 가장 마지막 행 번호를 구하는 것인데요.
예를 들어서, 다음과 같은 경우들이 자주 발생합니다.
데이터를 스크립트로 가져와서 현재 있는 데이터 맨아래에 붙여넣기 (Append) 해야 하는 경우
범위(Range)를 설정할 때 동적으로 해야하는 경우
시트와 열(Column)을 넣으면, 마지막 행을 구해주는 함수를 미리 작성해두고 사용하면 전체 프로젝트에서 유용하게 사용할 수 있습니다.

가장 마지막 행 번호를 구하는 함수

다음과 같은 함수를 프로젝트에서 사용하고 있습니다.
function lastrow_of_col(sheet_name, col) { let lastrow = sheet_name.getMaxRows(); let col_values = sheet_name.getRange(col + '1:' + col + lastrow).getValues(); for (; col_values[lastrow - 1] == '' && lastrow > 0; lastrow--) { } return lastrow }
JavaScript
복사
여기서 sheet_name 은 다음과 같은 메소드로 시트를 명시해주어야 합니다.
let sheet_name = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('시트명')
col은 작은 따옴표로 감싸준 알파벳이어야 합니다.
'A'

원리 설명

원리는 간단합니다.
1.
sheet.getMaxRows() 메소드로 시트의 가장 마지막 행을 가져옵니다. 이 마지막 행은 우리가 원하는 열의 마지막 행보다는 항상 크거나 같을 것입니다. 데이터가 들어있지 않더라도 가장 마지막 행을 가져옵니다.
2.
지정한 열 (col)과 계산한 마지막 행 (lastrow)로 범위를 만들고, 값들을 가져옵니다.
3.
이제 반복문을 실행하는데, 가장 마지막 값부터 한 행 씩 올라오면서 값이 비어있고, 0보다 큰지 체크합니다. 반복하면서 마지막 행 값을 1씩 줄여나갑니다.
4.
값이 있다면 반복문을 중단하고 마지막 행 값 (lastrow) 을 리턴합니다.

예제 확인

다음과 같이 데이터가 들어있는 시트가 있습니다.
다음 코드로 시트의 가장 마지막 행을 확인할 수 있습니다.
function maxRow(){ let maxRow = SpreadsheetApp.getActiveSheet().getMaxRows() Logger.log(maxRow) } // 결과: 시트의 마지막 행인 1000을 리턴합니다. // 1000.0
JavaScript
복사
만약 데이터가 들어있는 마지막 행을 확인하고자 한다면, getMaxRows() 대신 getLastRow()를 사용할 수 있습니다.
이제 다음과 같이 파라미터를 넘겨줄 함수를 하나 작성합니다.
시트명은 LastRow 이고, 마지막 행을 확인할 열은 A열로 지정합니다.
미리 만들어둔 lastrow_or_col 함수에 파라미터로 두 값을 넘겨줍니다.
리턴받은 값을 lastrow 에 저장하고, 로그로 표시합니다.
function testFunc(){ const sheet_name = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('LastRow') const col = 'A' let lastrow = lastrow_of_col(sheet_name,col) Logger.log(lastrow) } // 결과: A열의 맨 마지막 값인 15행이 표시됩니다. // 15.0
JavaScript
복사

가장 마지막 행의 값을 구하는 방법

가장 마지막 행의 값을 구하는 함수

가장 마지막 행을 구하는 함수를 응용해서 다음과 같이 사용할 수 있습니다.
function lastrow_of_col_value(sheet_name, col) { let lastrow = sheet_name.getMaxRows(); let col_values = sheet_name.getRange(col + "1:" + col + lastrow).getValues(); for (; col_values[lastrow - 1] == "" && lastrow > 0; lastrow--) { } return sheet_name.getRange(col + lastrow).getValue(); }
JavaScript
복사

관련 포스팅