구글 시트로 업무 자동화
“월요일 아침 30분을 되찾다”
02이 차시를 마치면
- 1.구글 시트를 단순한 표가 아니라 데이터베이스처럼 구조화해 쓸 수 있다.
- 2.Apps Script를 이용해 시트 데이터를 읽고 가공하는 스크립트를 AI와 함께 작성할 수 있다.
- 3.시간 트리거를 설정해 매주 정해진 시각에 자동으로 실행되게 만들 수 있다.
- 4.완성된 리포트를 이메일로 자동 발송하도록 연결할 수 있다.
- 5.Apps Script를 웹앱으로 배포해 다른 사람도 실행할 수 있게 공개할 수 있다.
03왜 필요한가
매주 월요일 아침, 지난 한 주 담당자별 매출을 정리해 요약 시트에 옮기고 팀장에게 메일로 보내는 일을 반복하고 있다고 해보자. 시트를 열어 데이터를 확인하고, 담당자별로 합계를 계산하고, 요약 시트에 옮겨 적고, 메일을 쓰는 데만 매번 30분 가까이 걸린다. 내용 자체는 단순 반복이라 자동화했을 때 얻는 것이 크다.
- 매주 같은 계산을 손으로 반복하다 보면 합계 누락이나 담당자 이름 오타 같은 실수가 생긴다.
- 담당자가 바뀌거나 항목(열)이 하나 늘어나면 수식을 다시 손봐야 한다.
- 리포트를 완성해도 공유(메일 발송)까지 또 사람 손이 필요하다.
- 이런 업무는 개발팀에 정식으로 요청하기엔 너무 작아서 항상 우선순위에서 밀린다.
04개념 설명
시트를 데이터베이스처럼 본다
지금까지 구글 시트를 '사람이 보는 표'로만 써왔다면, 이번 차시부터는 '프로그램이 읽는 데이터'로 다시 본다. 한 행(row)은 하나의 기록이고, 한 열(column)은 그 기록이 가진 하나의 항목이다. 첫 행에 적힌 이름표(헤더)가 이 데이터의 구조, 즉 스키마 역할을 한다.
이렇게 구조를 명확히 해두면 AI에게 '이 시트에서 담당자별 합계를 내줘'라고 요청했을 때, AI가 어느 열을 기준으로 묶고 어느 열을 더해야 하는지 헷갈리지 않는다.
| 날짜 | 담당자 | 거래처 | 금액 |
|---|---|---|---|
| 2024-01-06 | 김민준 | A상사 | 500,000 |
| 2024-01-08 | 이서연 | B물산 | 320,000 |
- 한 행 = 하나의 기록 (예: 거래 한 건)
- 한 열 = 하나의 항목 (예: 날짜, 담당자, 금액)
- 첫 행은 이름표 — 절대 비워두지 않는다
Apps Script는 시트 안에 사는 작은 프로그램이다
Apps Script는 구글 시트·문서·드라이브를 자동화하기 위해 구글이 제공하는 자바스크립트 기반 스크립트 환경이다. 시트를 열지 않아도, 정해진 시간이 되면 백그라운드에서 혼자 실행된다.
코드를 몰라도 괜찮다 — 이 차시의 핵심은 '어떤 동작이 필요한지'를 AI에게 정확히 설명하는 것이고, 코드를 직접 짜는 일은 AI가 담당한다. 다만 실행 버튼이 어디 있는지, 결과를 어떻게 확인하는지는 손에 익혀야 한다.
여기서 열리는 편집기에 AI가 써준 코드를 붙여넣는다.
- 시트 상단 메뉴 '확장 프로그램 → Apps Script'로 들어간다
- 코드는 AI가 쓰고, 실행과 확인은 내가 한다
트리거 — 사람이 안 눌러도 실행되게
지금까지 만든 스크립트는 '실행' 버튼을 눌러야만 동작했다. 트리거는 특정 시점(매주 월요일 오전 9시 등)이나 특정 이벤트(시트가 수정될 때 등)가 발생하면 스크립트를 자동으로 실행시키는 예약 장치다.
이번 차시에서는 시간 기반 트리거를 쓴다. 한 번 등록해두면, 컴퓨터를 꺼둬도 구글 서버가 대신 실행해준다.
자동화의 흐름 — 읽기 → 가공 → 쓰기 → 알림
이 차시에서 만들 자동화는 거의 모든 업무 자동화에 그대로 적용되는 4단계 흐름을 따른다: 원본 데이터를 읽고, 필요한 형태로 가공하고, 결과를 어딘가에 쓰고, 완료됐음을 알린다.
이 흐름을 기억해두면 다음 차시(API 연동)나 중급 과정(데이터 파이프라인)에서도 같은 틀로 새 자동화를 설계할 수 있다.
- 읽기 — 원본 시트에서 지난 주 데이터만 골라낸다
- 가공 — 담당자별로 묶어 합계를 계산한다
- 쓰기 — '주간요약' 시트에 결과를 적는다
- 알림 — 완료 메일을 보낸다
05실습 가이드
1. 실습용 시트 준비하기
- 제공된 실습 시트(assets/session-04/weekly-sales.xlsx 또는 안내된 템플릿 링크)를 내 구글 드라이브로 사본 저장한다.
- A열 날짜, B열 담당자, C열 거래처, D열 금액 구조인지 확인한다.
- 실제 업무 시트를 쓰고 싶다면, 반드시 '사본'을 만들어 그 사본에서 실습한다.
예상 결과 — 내 드라이브에 실습용 시트 사본이 생기고, 4개 열 구조가 보인다.
안 될 때 — 템플릿이 안 열리면 공유 권한(뷰어→편집자) 문제일 수 있다. 새 시트를 직접 만들고 같은 열 구조로 헤더만 옮겨 적어도 실습에 지장이 없다.
2. Apps Script 편집기 열기
- 시트 상단 메뉴에서 '확장 프로그램 → Apps Script'를 클릭한다.
- 새 탭에 코드 편집기가 열리는지 확인한다. 기본으로 'function myFunction() {}'만 적힌 빈 파일이 보인다.
예상 결과 — Apps Script 편집기 화면이 열리고 빈 코드 파일이 보인다.
안 될 때 — 메뉴에 '확장 프로그램'이 안 보이면 시트가 아니라 다른 화면(드라이브 목록 등)에 있는 것이다. 시트를 먼저 연 상태에서 다시 시도한다.
3. AI에게 요약 스크립트 요청하기
- Claude Code(또는 VS Code 사이드바)에서 P4-1 프롬프트를 내 시트 구조에 맞게 값을 채워 요청한다.
- AI가 준 코드를 Apps Script 편집기의 빈 코드 파일에 그대로 붙여넣는다.
- 저장(Ctrl+S 또는 💾 아이콘)한다.
예상 결과 — 코드가 편집기에 붙여넣어지고 오류 표시 없이 저장된다.
안 될 때 — 저장 시 빨간 밑줄이 보이면 코드가 중간에 잘려 붙여넣어졌을 가능성이 높다. AI 응답 전체를 다시 복사한다.
4. 첫 실행과 권한 승인
- 편집기 상단의 '실행' 버튼을 누른다.
- 처음 실행하면 '권한 검토' 창이 뜬다 — 본인 구글 계정으로 만든 스크립트이므로 '고급 → (프로젝트 이름)(으)로 이동 → 허용' 순서로 진행한다.
- 실행 로그(하단 '실행 로그' 탭)에 오류 없이 완료됐다는 메시지가 뜨는지 확인한다.
예상 결과 — 권한 승인 후 스크립트가 끝까지 실행되고 실행 로그에 에러가 없다.
안 될 때 — 빨간 에러 메시지가 뜨면 P4-2(에러 복구 프롬프트)에 에러 메시지 전문을 그대로 붙여 AI에게 다시 물어본다.
5. 결과 확인하기
- 시트 화면으로 돌아와 하단 탭에 '주간요약' 시트가 새로 생겼는지 확인한다.
- 담당자별 합계 금액이 실제 원본 데이터와 맞는지 손으로 한 번 검산해본다.
예상 결과 — '주간요약' 시트에 담당자별 합계가 정리되어 있고, 검산 결과가 일치한다.
안 될 때 — 숫자가 이상하면 원본 시트의 빈 칸이나 텍스트로 입력된 숫자(예: '1,000원')가 원인인 경우가 많다. 원본 데이터 상태를 AI에게 알려주고 다시 물어본다.
6. 매주 자동 실행되게 트리거 설정하기
- P4-3 프롬프트로 AI에게 트리거 설정 방법을 안내받는다.
- Apps Script 편집기 왼쪽 시계 아이콘(트리거) 메뉴에서 '트리거 추가'를 클릭한다.
- 실행할 함수, '시간 기반' 트리거 유형, '주 단위 타이머', '월요일', '오전 9시~10시' 순서로 설정하고 저장한다.
예상 결과 — 트리거 목록에 방금 만든 항목이 하나 등록되어 보인다.
안 될 때 — 저장이 안 되면 아직 4단계의 권한 승인이 끝나지 않은 것이다. 4단계부터 다시 진행한다.
7. 완료 이메일 연결하기
- P4-4 프롬프트로 AI에게 메일 발송 코드를 추가로 요청한다.
- 받은 코드를 기존 스크립트에 이어 붙이고 저장한 뒤, '실행' 버튼으로 다시 한번 테스트한다.
- 내 메일함에 요약 메일이 도착했는지 확인한다.
예상 결과 — 지정한 메일 주소로 주간 요약 메일이 도착한다.
안 될 때 — 메일이 안 오면 스팸함부터 확인한다. 그래도 없다면 실행 로그에서 MailApp 관련 에러가 있는지 확인해 P4-2로 복구한다.
8. (선택) 웹앱으로 배포하기
- 다른 사람도 버튼 클릭만으로 리포트를 갱신할 수 있게 하고 싶다면 P4-5 프롬프트로 웹앱 배포를 요청한다.
- 편집기 오른쪽 위 '배포 → 새 배포'에서 유형을 '웹 앱'으로 선택하고 안내에 따라 배포한다.
- 발급된 URL을 팀원에게 공유해본다.
예상 결과 — 웹앱 URL에 접속하면 버튼(또는 안내 문구)이 보이고, 클릭 시 시트가 갱신된다.
안 될 때 — '승인되지 않은 앱' 경고가 뜨면 본인 계정 스크립트이므로 '고급 → 이동 → 허용'으로 진행해도 안전하다. 사내 배포 시에는 조직 정책을 먼저 확인한다.
06실전 프롬프트
07이것만은 주의
무슨 일이 생기나 — AI가 만든 스크립트에 clear()나 덮어쓰기 코드가 포함되어 있으면, 실행 한 번에 원본 데이터가 사라질 수 있다.
대처 — 항상 사본 시트에서 먼저 테스트한다. 실행 전에 원본을 다운로드하거나 버전 기록(파일 → 버전 기록)을 확인해둔다.
무슨 일이 생기나 — 처음 실행하면 '앱이 확인되지 않았습니다' 같은 경고 화면이 뜬다. 낯선 경고에 실행을 포기하는 경우가 많다.
대처 — 본인이 직접 만든 스크립트를 본인 계정에서 실행하는 것이므로 안전하다. '고급 → (프로젝트 이름)(으)로 이동 → 허용' 순서로 진행하면 된다. 사내 계정이라면 조직의 앱 승인 정책을 먼저 확인한다.
무슨 일이 생기나 — 같은 트리거를 실수로 여러 번 추가하면, 정해진 시각에 같은 메일이 여러 통 발송된다.
대처 — 트리거 메뉴(시계 아이콘)에서 등록된 트리거 목록을 확인하고, 같은 함수를 가리키는 중복 항목을 삭제한다.
무슨 일이 생기나 — 무료 계정 기준 Apps Script 한 번 실행은 정해진 시간(문서 작성 시점 기준 약 6분) 안에 끝나야 한다. 데이터가 매우 많으면 중간에 멈출 수 있다.
대처 — 처음엔 소량 데이터로 테스트한다. 데이터가 많다면 나눠서 처리하는 방법을 AI에게 물어본다. 정확한 한도 수치는 실습 직전 공식 문서에서 확인한다.
08자가 점검
09과제
자신의 실제 업무 시트(주간 리포트, 재고 현황, 고객 문의 정리, 예약 접수 등) 중 하나를 골라, 이번 실습과 같은 흐름(읽기 → 가공 → 쓰기 → 알림)의 자동화 스크립트를 만들어본다. 마땅한 업무 시트가 없다면 가상의 예시 데이터로 새 시트를 만들어 실습해도 된다.
제출 형식 — ① 실행 결과 스크린샷 ② Apps Script 코드가 담긴 사본 시트 공유 링크 ③ 사용한 프롬프트와 AI 응답 요약을 하나의 문서로 정리해 제출한다.
10더 알아보기
- Apps Script 공식 문서 — 트리거 종류와 서비스별(MailApp, SpreadsheetApp 등) 메서드 목록 확인용
- Google Workspace 할당량 한도 안내 — 실행 시간·이메일 발송 한도의 최신 수치는 여기서 확인
- 트리거(Trigger)
- — 특정 시점이나 이벤트가 발생했을 때 스크립트를 자동으로 실행시키는 예약 장치.
- Apps Script
- — 구글 시트·문서·드라이브 등을 자동화하기 위해 제공되는 자바스크립트 기반 스크립팅 환경.
- 웹앱 배포
- — Apps Script 프로젝트를 URL을 가진 웹페이지 형태로 공개해, 스크립트 편집기 없이도 실행할 수 있게 하는 기능.
다음 차시 예고 — 다음 차시에서는 구글 시트 밖에 있는 외부 API를 연결해, 남이 만든 데이터를 내 시트로 끌어오는 법을 다룹니다.