본문 바로가기
카테고리 없음

구글 시트 애드온 개발 시작하기 초보자를 위한 실전 가이드

by 시트자동화 2025. 10. 18.

구글 시트 애드온 관련 이미지
구글 시트 애드온

구글 시트를 사용하면서 반복되는 작업을 자동화하고 싶거나, 없는 기능을 직접 만들어 사용하고 싶다는 생각을 해보신 적이 있나요? 구글 시트 애드온 개발은 프로그래밍 경험이 많지 않아도 시작할 수 있는 접근성 높은 분야입니다. 자바스크립트 기반의 구글 앱스 스크립트를 활용하면 맞춤형 함수부터 복잡한 자동화 도구까지 다양한 기능을 구현할 수 있습니다. 본 글에서는 앱스 스크립트 기본 환경 설정 및 첫 함수 작성하기부터 시작하여, 커스텀 메뉴와 사이드바로 사용자 인터페이스 구축하는 방법, 그리고 트리거 활용 자동화 및 배포 준비 과정까지 단계별로 상세히 안내합니다. 실제로 동작하는 간단한 애드온을 직접 만들어보면서 개발 프로세스 전체를 경험할 수 있도록 구성하였습니다. 코딩 초보자도 따라할 수 있는 예제 코드와 함께 실무에서 자주 발생하는 문제 해결 방법까지 포함하여, 이 글 하나로 애드온 개발의 기초를 완벽히 습득할 수 있습니다.

앱스 스크립트 기본 환경 설정 및 첫 함수 작성하기

구글 시트에서 확장 프로그램 메뉴를 선택한 후 앱스 스크립트를 클릭하면 새로운 브라우저 탭에서 스크립트 편집기가 열립니다. 초기 화면에는 myFunction이라는 빈 함수가 기본으로 생성되어 있으며, 이것이 첫 코드를 작성할 시작점입니다. 프로젝트 이름을 클릭하여 의미 있는 이름으로 변경하는 것부터 시작합니다. 예를 들어 ""데이터 정리 도구"" 같은 구체적인 이름을 사용하면 나중에 여러 프로젝트를 관리할 때 구분이 쉽습니다. 첫 번째 함수로는 간단한 메시지 표시 기능을 만들어봅니다. SpreadsheetApp.getUi().alert() 메서드를 사용하면 시트 화면에 팝업 메시지를 띄울 수 있습니다. 코드를 작성한 후 상단의 실행 버튼을 클릭하면 권한 승인 요청이 나타나는데, 이는 스크립트가 구글 시트에 접근하기 위해 필요한 과정입니다. 고급 옵션을 클릭하여 본인 프로젝트로 이동한 후 허용을 선택하면 함수가 실행됩니다. 데이터를 읽고 쓰는 기본 함수를 익히는 것이 중요합니다. SpreadsheetApp.getActiveSpreadsheet()로 현재 시트를 가져오고, getActiveSheet()로 활성 시트를, getRange()로 특정 범위를 선택합니다. getValue()와 setValue() 메서드로 셀 값을 읽고 쓸 수 있으며, getValues()와 setValues()를 사용하면 범위 전체를 배열로 처리할 수 있어 대량 데이터 작업 시 효율적입니다. 반복문과 조건문을 활용한 실용적인 예제로는 특정 열에서 빈 셀을 찾아 기본값을 입력하는 함수가 있습니다. for 루프로 행을 순회하며 if 조건으로 빈 셀을 체크한 후 값을 입력하는 방식입니다. 로깅 기능도 디버깅에 필수적입니다. Logger.log()로 중간 결과를 기록하고, 실행 후 보기 메뉴의 로그에서 확인하면 코드가 의도대로 동작하는지 검증할 수 있습니다. 최신 V8 런타임을 활성화하면 const, let, 화살표 함수 같은 최신 자바스크립트 문법을 사용할 수 있습니다. 프로젝트 설정에서 V8 런타임 사용을 체크하면 코드 가독성과 성능이 모두 향상됩니다.

커스텀 메뉴와 사이드바로 사용자 인터페이스 구축하는 방법

사용자가 스크립트를 쉽게 실행할 수 있도록 커스텀 메뉴를 추가하는 것이 애드온의 핵심입니다. onOpen() 함수는 시트가 열릴 때 자동으로 실행되는 특별한 함수로, 여기에 메뉴 생성 코드를 작성합니다. SpreadsheetApp.getUi().createMenu()로 메뉴 객체를 만들고, addItem()으로 메뉴 항목을 추가한 후, addToUi()로 실제 메뉴바에 표시합니다. 각 메뉴 항목에는 실행할 함수 이름을 문자열로 지정하며, addSeparator()로 구분선을 추가하여 관련 기능끼리 그룹화할 수 있습니다. 서브메뉴도 생성 가능합니다. createMenu()로 만든 메뉴 객체를 다른 메뉴의 addSubMenu()에 전달하면 계층 구조가 만들어져 많은 기능을 체계적으로 정리할 수 있습니다. 사이드바는 더욱 풍부한 인터페이스를 제공합니다. HTML 파일을 만들어 입력 폼, 버튼, 결과 표시 영역을 구성할 수 있으며, 스크립트와 양방향 통신이 가능합니다. 새 파일 메뉴에서 HTML을 선택하여 파일을 생성하고, 기본 HTML 구조에 폼 요소를 추가합니다. 스크립트에서 HtmlService.createHtmlOutputFromFile()로 HTML을 로드하고, SpreadsheetApp.getUi().showSidebar()로 사이드바를 표시합니다. HTML에서 스크립트 함수를 호출할 때는 google.script.run을 사용합니다. 버튼 클릭 이벤트에서 google.script.run.함수명(매개변수) 형태로 호출하면 서버 측 스크립트가 실행됩니다. withSuccessHandler()와 withFailureHandler()를 체이닝하여 실행 결과나 오류를 처리할 수 있습니다. 스타일링을 위해 CSS를 style 태그 내에 작성하거나 외부 CSS 프레임워크를 CDN으로 불러올 수 있습니다. Bootstrap이나 Material Design Lite를 사용하면 전문적인 UI를 빠르게 만들 수 있습니다. 데이터 유효성 검사도 중요합니다. 사용자가 잘못된 값을 입력했을 때 경고 메시지를 표시하고, 올바른 형식으로 입력하도록 안내해야 합니다. 진행 상황 표시도 사용자 경험을 개선합니다. 시간이 오래 걸리는 작업의 경우 HTML에 진행률 바를 추가하고, 스크립트에서 중간 상태를 전달하여 사용자가 프로세스를 파악할 수 있도록 합니다.

트리거 활용 자동화 및 배포 준비 과정

트리거는 특정 이벤트 발생 시 자동으로 함수를 실행하는 강력한 기능입니다. 간단한 트리거로는 onOpen, onEdit, onChange가 있으며, 이들은 시트 열기, 셀 편집, 구조 변경 시 자동 실행됩니다. onEdit 트리거를 활용하면 특정 셀이 수정될 때 타임스탬프를 자동 기록하거나, 데이터 유효성을 실시간으로 검증할 수 있습니다. 이벤트 객체 e를 매개변수로 받아 e.range로 수정된 범위를, e.value로 새로운 값을 확인할 수 있습니다. 설치 가능한 트리거는 더 많은 기능을 제공합니다. 스크립트 편집기 좌측의 트리거 메뉴에서 추가할 수 있으며, 시간 기반 트리거로 매일, 매주, 매월 특정 시간에 함수를 실행하거나, 양식 제출 시 트리거로 구글 폼 응답이 시트에 추가될 때 자동 처리할 수 있습니다. 트리거 실행 로그는 실행 항목 메뉴에서 확인 가능하며, 오류 발생 시 자동으로 이메일 알림을 받도록 설정할 수 있습니다. 오류 처리는 안정성을 위해 필수적입니다. try-catch 블록으로 예외를 포착하고, 적절한 에러 메시지를 사용자에게 표시하거나 로그에 기록합니다. 권한 관리도 중요한 고려사항입니다. appsscript.json 파일에서 oauthScopes를 명시적으로 선언하면 사용자가 승인해야 할 권한을 명확히 할 수 있습니다. 배포 전 테스트는 철저히 수행해야 합니다. 다양한 데이터 패턴으로 함수를 실행해보고, 엣지 케이스에서도 오류 없이 동작하는지 확인합니다. 배포 옵션에는 여러 가지가 있습니다. 본인만 사용할 경우 현재 상태로 두고, 조직 내 공유는 배포 메뉴에서 새 배포를 선택하여 유형을 추가 기능으로 설정하고 액세스 권한을 조직 내부로 제한합니다. 공개 배포를 원한다면 Google Workspace Marketplace에 등록해야 하며, 이를 위해서는 상세한 설명, 스크린샷, 개인정보 보호정책 등의 자료가 필요합니다. 버전 관리를 위해 배포 시 설명을 상세히 작성하고, 주요 변경사항을 문서화합니다. 사용자 피드백을 수집하여 지속적으로 개선하면 실용적인 도구로 발전시킬 수 있습니다.