앱스 스크립트는 구글 스프레드시트의 자체 기능으로는 부족한 부분을 채워줍니다. 엑셀 VBA와 비슷하지만 엑셀 VBA보다 활용도가 훨씬 높습니다.
앱스 스크립트는 ‘내가 이걸 만들기 위해 쓰는 시간 < 감소되는 작업당 시간 * 일 평균 작업 횟수 * 내가 이 회사에 다닐 기간’ 부등식이 만족되는 경우에 사용하면 좋습니다. 구글 스프레드시트의 함수와 기본 기능으로 처리할 수 있는 일은 앱스 스크립트를 사용할 필요가 없습니다. 다만, 다음과 같은 작업에서는 앱스 스크립트를 쓰면 편해집니다. 당장 내일 회사를 그만두는 게 아니라면 말이죠.
대단한 작업은 없습니다. 앱스 스크립트로 ERP나 그룹웨어를 만들지 않을 거니까요.
앱스 스크립트의 종류에는 ①시트 등의 문서에 종속되는 스크립트(Container-bound Scripts), ②구글 드라이브에서 별개의 파일처럼 표시되는 독립된 스크립트(Standalone Scripts), ③웹 브라우저에서 스크립트에 접속해 기능을 수행할 수 있도록 인터페이스를 갖고 있는 웹 앱(Web Apps)이 있습니다.
①주로 Container-bound Scripts를 다루게 되는데, 앱스 스크립트를 하기 위해 알아야 하는 것은 딱 세 가지. 즉 ①앱스 스크립트=자바스크립트 ②참고 할 곳 ③복사&붙여넣기입니다.
앱스 스크립트는 자바스크립트 기반입니다. 코딩을 해본 적이 없다구요? 걱정하지 마세요. 이미 다른 사람들이 만들어 놓은 코드를 가져와 붙여 넣기만 할 거예요. 다만, 복사&붙여넣기할 때 무엇이 코드고 무엇이 주석인지 정도는 알아야 하니 가볍게 살펴보겠습니다.
코드 예시는 다음과 같습니다.
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange('A2:Z').clear(); //sheet의 A2:Z 범위의 내용을 모두 지웁니다.
};
구글 스프레드시트에서 쓰는 기능들이 앱스 스크립트에서는 스프레드시트, 시트, 범위, 피벗 테이블, 필터, 조건부 서식과 같은 큰 덩어리(클래스)로 구분되어 있습니다. 또한 각 클래스마다 앱스 스크립트를 이용해서 조작할 수 있는 기능(메서드)이 정의되어 있습니다.
SpreadsheetApp, Sheet처럼 기능을 실행하는 덩어리를 클래스(class), 이 클래스에서 수행할 수 있는 기능들을 메서드(method)라고 합니다. 보통 클래스는 별도의 이름을 지정한 변수의 형태로 사용합니다. 코드에서는 spreadsheet라는 변수에 현재 활성화된 SpreadsheetApp이라는 클래스를, sheet라는 변수에 현재 활성화된 Sheet라는 클래스를 할당했습니다. 이런 클래스에는 getActive( ), getActiveSheet( ), getRange( ), clear( )와 같은 메서드가 미리 정의되어 있습니다.
사실 이름은 중요하지 않습니다. 구글의 앱스 스크립트 설명서에서 기능을 찾을 때 이 클래스와 메서드를 기준으로 찾으면 된다는 사실만 기억해 주세요.
본격적으로 앱스 스크립트를 사용하기 전에 참고할 페이지를 살펴보고, 훌륭한 업무 보조가 되어 줄 챗GPT와 제미나이를 소개합니다. 이 사이트에서 원하는 클래스 또는 메서드를 찾아 복사하고 붙여넣기만 하면 됩니다. 이마저도 직접할 필요가 없습니다. 챗GPT나 제미나이에게 원하는 코드를 작성해 달라고 부탁하면 되니까요.
구글은 앱스 스크립트에 대한 훌륭한 참고 자료를 만들어두었습니다. 구글의 레퍼런스 사이트(https://developers.google.com/apps-script/reference/spreadsheet)에는 앞에서 살펴본 클래스와 메서드가 잔뜩 설명되어 있습니다. SpreadsheetApp 클래스에는 getActive(), getActiveSheet( ) 메서드가 설명되어 있고, 시트 클래스에는 getRange( ) 메서드가 설명되어 있습니다.
왼쪽 카테고리에서 다루려고 하는 클래스를 선택하고 그 클래스에서 할 수 있는 메서드를 찾아서 가져다 쓰면 됩니다.
• getActive( ) 메서드
• getActiveSheet( ) 메서드
• getRange( ) 메서드
챗GPT(ChatGPT)와 제미나이(gemini)는 각각 OpenAI와 구글에서 내놓은 인공지능 서비스입니다. 두 인공지능 챗봇은 사람의 언어를 이해하고 상황에 맞는 대답을 할 뿐 아니라 프로그래밍 언어도 습득했기 때문에 앱스 스크립트를 작성하는 데 활용할 수 있습니다. 앱스 스크립트를 작성하기 위해 자바스크립트 문법까지 배울 여력이 없는 우리에게는 더욱이 큰 도움이 될 거예요.
두 서비스 중 어떤 것을 선택하더라도 사용법과 결과에 큰 차이는 없습니다. 챗GPT는 선발주자답게 사용자의 수가 제미나이보다 많고, 더 자연스러운 대화가 가능한 반면 구글에서 만든 제미나이는 구글 듀엣 AI 등으로 구글 워크스페이스와 호환성이 좋다는 장점이 있습니다. 인공지능 서비스는 눈부신 속도로 발전하고 있습니다. 따라서 이 글을 읽는 시점에 가장 좋은 도구를 선택하시면 됩니다.
앱스 스크립트를 하기 위해서 우리가 가장 많이 할 작업은 복사&붙여넣기입니다. 스크립트 편집기에서 clear( ) 메서드를 실행해 시트에 입력되어 있는 내용을 삭제해보겠습니다.
01 예제 | APPS SCRIPT(122행 7.1.2. APPS SCRIPT_완성) 예제 스프레드시트를 열고 [확장 프로그램] - [Apps Script] 메뉴를 클릭합니다. 로그인한 계정에 스프레드시트의 소유자 또는 편집자 권한이 있어야 앱스 스크립트 편집기에 접근이 가능합니다.
02 스크립트 편집기인 [Apps Script] 창이 열립니다. 왼쪽은 앱스 스크립트와 관련된 파일들이 표시되는 곳이고, 오른쪽은 코드 입력 창입니다. 이제 오른쪽의 빈 창에 코드를 넣으면 됩니다.
03 구글 앱스 스크립트(https://developers.google.com/apps-script?hl=ko)에서 [참조] - [Sheets] - [시트] 클래스를 선택하고 clear() 메서드를 찾아 클릭한 뒤 설명에서 코드를 복사합니다. [first] 시트의 내용을 전부 삭제해주는 스크립트입니다. 우리는 주석을 구분할 줄 아니까 주석 부분은 빼고 복사해도 됩니다.
04 이번에는 01에서 실행한 스크립트 편집기의 코드 입력 창에서 function myFunction() { 아랫줄에 복사해 온 코드를 붙여넣기 합니다. 들여쓰기가 잘못되어 있지만 무시하고 툴바의 프로젝트 저장( ) 아이콘을 클릭합니다.
05 제목을 클릭하면 이름을 지정하는 [프로젝트 이름 변경] 창이 나타납니다. 원하는 이름을 입력하고 [이름 변경하기] 버튼을 클릭합니다.
06 상단 툴바에서 실행할 함수가 ‘myFunction’으로 선택되어 있는 것을 확인하고 [실행] 버튼을 클릭해서 방금 만든 myFunction 함수를 실행합니다.
07 앱스 스크립트는 최초 실행할 때 실행하는 사람의 권한을 요청합니다. [승인 필요] 창에서 [권한 검토] 버튼을 클릭합니다.
08 권한을 부여할 계정을 선택합니다.
[다른 계정 사용]을 클릭하여 앱스 스크립트를 실행할 다른 계정을 지정할 수도 있습니다. 물론 사용할 계정은 해당 스프레드시트에 대한 권한을 가지고 있어야 합니다.
09 내가 만든 앱은 구글에서 확인하지 않은 앱이라고 하면서 정말 이 개발자를 신뢰할 것인지 물어봅니다. [고급]을 클릭해 고급 설정을 표시하고 ‘안심하십쇼 이 코드는 안전합니다(으)로 이동(안전하지 않음)’을 클릭해서 해당 프로젝트로 이동합니다.
구글 워크스페이스 계정에서는 이 화면이 나타나지 않고 10번으로 바로 넘어갑니다.
10 이 코드가 요청하는 권한에 대한 설명이 나옵니다. 이 코드에 권한을 부여하면 스프레드시트 보기, 수정, 생성, 삭제가 가능합니다. 안전한 코드이므로 [허용] 버튼을 클릭합니다. 이제 권한이 모두 허용되었으므로 코드가 실행됩니다.
11 가득 차 있던 스프레드시트의 내용이 모두 삭제되었습니다. 복사&붙여넣기만으로 안전한 앱스 스크립트를 만들어보았습니다.
위 콘텐츠는 『일잘러의 비밀, 구글 스프레드시트 제대로 파헤치기(개정판)』의 내용을 재구성하여 작성하였습니다.
최신 콘텐츠