구글 스프레드 시트를 많이 사용하게 되면서 좀 더 다양하게 활용하기 위해 Apps Script를 이용하여 작업하는 경우도 늘어가게 되었다.
시트를 복제하여 사용하는 경우 새로운 Apps Script 프로젝트가 생성되어, 스크립트를 수정하여도 다른 시트에는 적용이 안되는 문제로 인해 관리적 이슈가 발생했는데, 커스텀 라이브러리를 만들어 이러한 문제를 해결하고자 한다.
https://script.google.com/home 으로 접속하면 아래와 같은 화면이 나오게 된다.

기존에는 스프레드 시트의 메뉴에서 Apps Script를 접근하여 새로운 프로젝트를 생성하였는데, 이번에는 공유할 수 있는 커스텀 라이브러리 프로젝트를 만드려고 한다.
좌측 상단에 새 프로젝트 버튼을 눌러 프로젝트를 생성한다.
이번 예제에서는 스프레드 시트의 내용을 JSON으로 변경하는 일이 많은데, 구글링으로 찾은 프로젝트 JSON Puller를 커스텀 라이브러리화 시킬 것이다.
위의 링크에 있는 코드를 에디터에 추가하고 적당한 프로젝트 이름으로 설정한다. 파일이름도 변경하고 싶다면 바꿔도 커스텀 라이브러리에는 영향을 주지 않는다.

우측 상단에 파란색 배포 버튼을 눌러 새 배포 메뉴를 선택한다.
새 배포 창이 뜨면 유형은 라이브러리로 선택하고 설명에는 적당한 이름을 적어준다. (예제에서는 JSON Puller 로 함)

우측 하단에 배포버튼을 누르면 다른 프로젝트에서 해당 라이브러리를 사용할 수 있게 된다.
배포 후에 나오는 배포 ID 와 라이브러리 URL 은 커스텀 라이브러리와 관계가 없으므로 눈으로 확인하고 넘어간다. (나중에 확인할 수 있음)
다른 프로젝트에서 라이브러리로 사용하기 위해서는 스크립트 ID를 확보해야 한다.
좌측 사이드바의 프로젝트 설정 메뉴를 선택하여 스크립트 ID를 확인한다.

테스트 용 시트를 새로 생성하고 확장 프로그램 > Apps Script 메뉴를 선택하면, 해당 시트에 연결된 Apps Script 프로젝트가 생성된다.

Apps Script 화면의 좌측 사이드바에서 라이브러리 + 를 선택하면 라이브러리 추가하는 창이 나오게 된다. 위에서 확인해둔 스크립트 ID를 넣고 조회 버튼을 누르면 위에서 생성한 프로젝트가 나오게 된다.
항상 최신 버전으로 라이브러리를 사용하려면 버전을 HEAD(개발자 모드)로 사용하고, 특정 버전으로 사용하려면 버전을 지정하면 된다.
식별자는 코드에서 사용하는 라이브러리 접근 지시자로 주어진 이름을 사용하거나 편한 이름으로 바꾸어도 된다. 이름을 바꿀 경우 코드에 해당 이름으로 라이브러리가 추가되므로 유의한다.


위와 같이 시트에 적당한 내용을 적어둔다. 주의할 사항은 추가한 라이브러리는 고정행을 기준으로 컬럼을 구분하므로, 원활한 테스트를 위해 첫 행은 고정행으로 만들어준다.
다시 스프레드 시트의 Apps Script 창으로 넘어가서 다음과 같은 코드를 작성한다.
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('시트1');
const json = JSONPuller.getRowsData(sheet);
console.log(json);
}
위의 코드를 보면 JSONPuller.getRowsData() 함수를 사용하였는데, 위에서 라이브러리 추가시 지정한 식별자 이름을 통해 라이브러리 함수를 사용하게 된다. 코드 인텔리전스도 지원되므로 쉽게 함수를 추가할 수 있다.
코드를 추가하면 상단 툴바에 함수 목록이 표시되는데 위에서 추가한 myFunction을 선택하고 실행버튼을 눌러 정상적으로 동작하는지 확인한다.
처음 실행 시 권한을 확인하는 팝업이 뜨게되는데 권한 설정을 하게되면 아래와 같이 실행결과를 확인할 수 있다.

구글 스프레드 시트를 Apps Script를 활용하여 사용하는 경우는 흔하게 볼 수 있는 것은 아닌 듯 하다. 하지만 스프레드 시트를 업무에 사용한다면 작업 생산성 향상을 위해 연구해 볼 만한 미개척 영역이라고 보여진다.