구글 워크스페이스/스프레드시트

[구글 스프레드 시트] 데이터 자동 정렬하기 - Apps Script

공부하는박대리 2022. 3. 3. 08:00

[구글 스프레드 시트] 데이터 자동 정렬하기 - Apps Script

 

구글 앱스 스크립트를 활용해 데이터를 자동 정렬하는 기능을 만들어보도록 하겠습니다.

 

 

1) 자동 정렬 기능이란?

 

내가 사용하는 시트에 데이터를 입력할때마다, 오름차순/내림차순 기능을 통해 순서를 재 정리해줄 필요없이 데이터를 입력하면 내가 설정한 기준에 따라 데이터를 자동으로 정렬해주는 기능입니다.

 

예제를 작성하여 적용한 결과화면은 아래 캡쳐와 같습니다. 예제에서 이수근이라는 직원의 정보를 새로 입력하며, 평가 점수를 87점으로 입력했을때 자동으로 순서를 재정렬해주는 모습입니다.

 

 

2) 앱스 스크립트를 이용하여 자동 정렬 기능 만들기

 

A. 먼저 자동 정렬을 설정해야 하는 시트에서 '확장 프로그램' → 'Apps Script'를 클릭해줍니다.

 

B. 스크립트를 작성합니다.

 

처음 앱스 스크립트 버튼 만들기를 누르면 아래와 같은 화면이 보이실겁니다. 당황하지 말고, 제가 아래 작성한 스크립트를 붙여넣은 뒤 작성한 데이터 형식에 맞도록 약간만 수정해주면 됩니다.

 

아래 스크립트는 제가 만들어놓은 데이터 형식에 맞게 작성되었으며, '붉은색'이 변수로 사용되어 있으니 바꿔서 사용하시면 됩니다.

 

function autosort(e){
    const row = e.range.getRow()
    const column = e.range.getColumn()
    const ss = e.source
    const currentSheet = ss.getActiveSheet()
    const currentSheetName = currentSheet.getSheetName()
 
    if(!(currentSheetName === "자동정렬" && column === 5 && row >= 2)) return
 
// "자동정렬"은 내가 적용하려는 시트의 이름입니다
// "column === 5"는 내가 사용하고 있는 컬럼의 개수가 5개라는 의미입니다 (예제에서 부서~환산등급 5개 컬럼 사용)
// "row >= 2"는 2행 이상인 경우 수행하도록 하는 조건으로서, 새로 데이터 입력되는 것을 체크하는 조건입니다
 
// 즉 위 if절은, 적용하려는 시트의 이름이 "자동정렬" and 컬럼수 5개 and 로우수 2개 이상 조건을 충족하는 경우, 자동 정령 기능이 수행되도록 설정한 문장입니다
 
    const range = currentSheet.getRange(2,2,currentSheet.getLastRow()-1,5)
    range.sort({column5ascendingfalse})
}
 
// 행,열의 2번째부터 데이터 범위가 지정됩니다. 마지막 입력된 row에서 1을 빼주는 이유는 예제에서 첫번째 행에 데이터가 공백이기 때문입니다. 5는 열의 개수입니다
// sort함수는 전체 범위 기준이기 때문에 평가 점수 기준으로 내림차순을 설정하기 위해서는 A열도 포함되어 5번째로 설정 필요합니다
// ascending : true로 설정하게 되면 오름차순으로 정렬됩니다
 
function onEdit(e){                      
    autosort(e)
}
// onEdit(e) 함수는 스프레드 시트에서 사용자가 value를 변경하면 자동으로 프로세스를 수행하도록 trigger 역할을 합니다 (변경하지 않고 사용하면 됩니다)

 

C. 작성 완료된 화면

 

D. 프로젝트 저장 및 실행

 

구글 앱스 스크립트를 잘 활용하면 사소하게 시간을 잡아먹는 업무들을 자동화할 수 있고, 업무시간을 단축할 수 있기 때문에 계속해서 관심을 가지고 배워보는 것도 좋을 것 같습니다.