/basic/session-04
04기본과정180분 (이론 60 + 실습 120)

구글 시트로 업무 자동화

월요일 아침 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가 담당한다. 다만 실행 버튼이 어디 있는지, 결과를 어떻게 확인하는지는 손에 익혀야 한다.

주간 매출 현황 — Google Sheets
확장 프로그램Apps Script

여기서 열리는 편집기에 AI가 써준 코드를 붙여넣는다.

  • 시트 상단 메뉴 '확장 프로그램 → Apps Script'로 들어간다
  • 코드는 AI가 쓰고, 실행과 확인은 내가 한다

트리거 — 사람이 안 눌러도 실행되게

지금까지 만든 스크립트는 '실행' 버튼을 눌러야만 동작했다. 트리거는 특정 시점(매주 월요일 오전 9시 등)이나 특정 이벤트(시트가 수정될 때 등)가 발생하면 스크립트를 자동으로 실행시키는 예약 장치다.

이번 차시에서는 시간 기반 트리거를 쓴다. 한 번 등록해두면, 컴퓨터를 꺼둬도 구글 서버가 대신 실행해준다.

01트리거 등록매주 월요일 오전 9시
02컴퓨터를 꺼둬도구글 서버가 대신 대기
03자동 실행사람이 누르지 않아도 동작

자동화의 흐름 — 읽기 → 가공 → 쓰기 → 알림

이 차시에서 만들 자동화는 거의 모든 업무 자동화에 그대로 적용되는 4단계 흐름을 따른다: 원본 데이터를 읽고, 필요한 형태로 가공하고, 결과를 어딘가에 쓰고, 완료됐음을 알린다.

이 흐름을 기억해두면 다음 차시(API 연동)나 중급 과정(데이터 파이프라인)에서도 같은 틀로 새 자동화를 설계할 수 있다.

01읽기지난 주 데이터만 골라내기
02가공담당자별 합계 계산
03쓰기'주간요약' 시트에 기록
04알림완료 메일 발송
  • 읽기 — 원본 시트에서 지난 주 데이터만 골라낸다
  • 가공 — 담당자별로 묶어 합계를 계산한다
  • 쓰기 — '주간요약' 시트에 결과를 적는다
  • 알림 — 완료 메일을 보낸다

05실습 가이드

  1. 1. 실습용 시트 준비하기

    • 제공된 실습 시트(assets/session-04/weekly-sales.xlsx 또는 안내된 템플릿 링크)를 내 구글 드라이브로 사본 저장한다.
    • A열 날짜, B열 담당자, C열 거래처, D열 금액 구조인지 확인한다.
    • 실제 업무 시트를 쓰고 싶다면, 반드시 '사본'을 만들어 그 사본에서 실습한다.

    예상 결과내 드라이브에 실습용 시트 사본이 생기고, 4개 열 구조가 보인다.

    안 될 때템플릿이 안 열리면 공유 권한(뷰어→편집자) 문제일 수 있다. 새 시트를 직접 만들고 같은 열 구조로 헤더만 옮겨 적어도 실습에 지장이 없다.

  2. 2. Apps Script 편집기 열기

    • 시트 상단 메뉴에서 '확장 프로그램 → Apps Script'를 클릭한다.
    • 새 탭에 코드 편집기가 열리는지 확인한다. 기본으로 'function myFunction() {}'만 적힌 빈 파일이 보인다.

    예상 결과Apps Script 편집기 화면이 열리고 빈 코드 파일이 보인다.

    안 될 때메뉴에 '확장 프로그램'이 안 보이면 시트가 아니라 다른 화면(드라이브 목록 등)에 있는 것이다. 시트를 먼저 연 상태에서 다시 시도한다.

  3. 3. AI에게 요약 스크립트 요청하기

    • Claude Code(또는 VS Code 사이드바)에서 P4-1 프롬프트를 내 시트 구조에 맞게 값을 채워 요청한다.
    • AI가 준 코드를 Apps Script 편집기의 빈 코드 파일에 그대로 붙여넣는다.
    • 저장(Ctrl+S 또는 💾 아이콘)한다.

    예상 결과코드가 편집기에 붙여넣어지고 오류 표시 없이 저장된다.

    안 될 때저장 시 빨간 밑줄이 보이면 코드가 중간에 잘려 붙여넣어졌을 가능성이 높다. AI 응답 전체를 다시 복사한다.

  4. 4. 첫 실행과 권한 승인

    • 편집기 상단의 '실행' 버튼을 누른다.
    • 처음 실행하면 '권한 검토' 창이 뜬다 — 본인 구글 계정으로 만든 스크립트이므로 '고급 → (프로젝트 이름)(으)로 이동 → 허용' 순서로 진행한다.
    • 실행 로그(하단 '실행 로그' 탭)에 오류 없이 완료됐다는 메시지가 뜨는지 확인한다.

    예상 결과권한 승인 후 스크립트가 끝까지 실행되고 실행 로그에 에러가 없다.

    안 될 때빨간 에러 메시지가 뜨면 P4-2(에러 복구 프롬프트)에 에러 메시지 전문을 그대로 붙여 AI에게 다시 물어본다.

  5. 5. 결과 확인하기

    • 시트 화면으로 돌아와 하단 탭에 '주간요약' 시트가 새로 생겼는지 확인한다.
    • 담당자별 합계 금액이 실제 원본 데이터와 맞는지 손으로 한 번 검산해본다.

    예상 결과'주간요약' 시트에 담당자별 합계가 정리되어 있고, 검산 결과가 일치한다.

    안 될 때숫자가 이상하면 원본 시트의 빈 칸이나 텍스트로 입력된 숫자(예: '1,000원')가 원인인 경우가 많다. 원본 데이터 상태를 AI에게 알려주고 다시 물어본다.

  6. 6. 매주 자동 실행되게 트리거 설정하기

    • P4-3 프롬프트로 AI에게 트리거 설정 방법을 안내받는다.
    • Apps Script 편집기 왼쪽 시계 아이콘(트리거) 메뉴에서 '트리거 추가'를 클릭한다.
    • 실행할 함수, '시간 기반' 트리거 유형, '주 단위 타이머', '월요일', '오전 9시~10시' 순서로 설정하고 저장한다.

    예상 결과트리거 목록에 방금 만든 항목이 하나 등록되어 보인다.

    안 될 때저장이 안 되면 아직 4단계의 권한 승인이 끝나지 않은 것이다. 4단계부터 다시 진행한다.

  7. 7. 완료 이메일 연결하기

    • P4-4 프롬프트로 AI에게 메일 발송 코드를 추가로 요청한다.
    • 받은 코드를 기존 스크립트에 이어 붙이고 저장한 뒤, '실행' 버튼으로 다시 한번 테스트한다.
    • 내 메일함에 요약 메일이 도착했는지 확인한다.

    예상 결과지정한 메일 주소로 주간 요약 메일이 도착한다.

    안 될 때메일이 안 오면 스팸함부터 확인한다. 그래도 없다면 실행 로그에서 MailApp 관련 에러가 있는지 확인해 P4-2로 복구한다.

  8. 8. (선택) 웹앱으로 배포하기

    • 다른 사람도 버튼 클릭만으로 리포트를 갱신할 수 있게 하고 싶다면 P4-5 프롬프트로 웹앱 배포를 요청한다.
    • 편집기 오른쪽 위 '배포 → 새 배포'에서 유형을 '웹 앱'으로 선택하고 안내에 따라 배포한다.
    • 발급된 URL을 팀원에게 공유해본다.

    예상 결과웹앱 URL에 접속하면 버튼(또는 안내 문구)이 보이고, 클릭 시 시트가 갱신된다.

    안 될 때'승인되지 않은 앱' 경고가 뜨면 본인 계정 스크립트이므로 '고급 → 이동 → 허용'으로 진행해도 안전하다. 사내 배포 시에는 조직 정책을 먼저 확인한다.

06실전 프롬프트

P4-1처음 자동화를 시작할 때

사용 시점 — 실습 3단계 — 시트 구조를 설명하고 첫 자동화 스크립트를 요청할 때

구글 시트로 [주간 매출 현황]을 관리하고 있어.
시트 구조는 A열 날짜, B열 담당자, C열 거래처, D열 금액이야.

매주 월요일 아침 9시에 자동으로 다음을 해주는 Apps Script를 만들어줘.
1. 지난 주 데이터만 골라내기
2. 담당자별 합계를 계산해서 '주간요약' 시트에 쓰기
3. 완료되면 [내 이메일 주소]로 요약 메일 보내기

나는 코딩을 모르니까, 코드를 어디에 붙여넣고
어떻게 실행하는지도 단계별로 알려줘.

기대 결과실행 가능한 스크립트 + 붙여넣을 위치 + 트리거 설정 방법까지 안내받는다.

P4-2에러가 났을 때 복구용

사용 시점 — 실습 4단계 — 실행 로그에 빨간 에러가 표시될 때

방금 준 코드를 실행했더니 이런 에러가 났어.

[에러 메시지 전체를 그대로 붙여넣기]

내가 한 것: [실행한 순서를 그대로]
시트 상태: [행 수, 빈 칸 유무 등]

무엇이 문제인지 먼저 설명하고, 고친 코드를 줘.
같은 에러가 다시 안 나게 하려면 뭘 조심해야 하는지도 알려줘.

기대 결과원인 진단 → 수정 코드 → 재발 방지 요령 순서로 답을 받는다.

P4-3매주 자동 실행되게 만들 때

사용 시점 — 실습 6단계 — 트리거를 처음 설정할 때

방금 만든 [주간 요약] 스크립트를
매주 월요일 오전 9시에 자동으로 실행되게 만들고 싶어.

Apps Script 화면에서 트리거를 어디서 어떻게 추가하는지
클릭 순서를 하나하나 알려줘.

그리고 실수로 트리거를 두 번 등록해서
같은 메일이 중복으로 오지 않게 하려면
어떻게 확인해야 하는지도 알려줘.

기대 결과트리거 메뉴 진입 경로 + 설정 항목 + 중복 등록 확인 방법을 안내받는다.

P4-4결과를 메일로 받고 싶을 때

사용 시점 — 실습 7단계 — 완성된 요약을 이메일로 발송하도록 연결할 때

지금 스크립트는 '주간요약' 시트에 결과를 쓰는 것까지는 잘 돼.
여기에 이어서, 요약이 끝나면

받는 사람: [내 이메일 주소]
제목: [주간 매출 요약 - 자동 발송]
본문: 담당자별 합계를 표 형태로 보기 좋게 정리

로 메일을 자동으로 보내는 코드를 추가해줘.
기존 코드는 그대로 두고, 어디에 이어 붙이면 되는지도 알려줘.

기대 결과기존 코드에 이어 붙일 수 있는 메일 발송 코드와 삽입 위치 안내를 받는다.

P4-5다른 사람도 실행할 수 있게 공개할 때

사용 시점 — 실습 8단계(선택) — 웹앱으로 배포해 팀원과 공유할 때

이 스크립트를 나 말고 팀원도
버튼 하나로 실행할 수 있게 만들고 싶어.

Apps Script를 웹 앱으로 배포하는 절차를
화면에 뭐가 뜨는지 포함해서 순서대로 알려줘.

그리고 이 배포가 우리 팀 안에서만 보이게 할지,
링크만 있으면 누구나 볼 수 있게 할지 선택하는 부분도
어떤 차이가 있는지 설명해줘.

기대 결과배포 절차 + 접근 권한(조직 내부/링크 공개) 선택지의 차이를 안내받는다.

P4-6시트 구조가 바뀌었을 때

사용 시점 — 담당자 열이 늘거나 열 순서가 바뀌어 기존 스크립트를 고쳐야 할 때

기존 자동화 스크립트가 있는데, 시트 구조가 바뀌었어.

바뀌기 전: [예: A날짜, B담당자, C거래처, D금액]
바뀐 후: [예: A날짜, B담당자, C거래처, D상품명, E금액]

기존 코드를 새 구조에 맞게 고쳐줘.
어느 부분을 어떻게 바꿨는지도 설명해줘서
다음에 또 구조가 바뀌면 내가 직접 짐작이라도 해볼 수 있게 해줘.

기대 결과변경된 열 구조에 맞춘 수정 코드와, 무엇을 왜 바꿨는지에 대한 설명을 받는다.

07이것만은 주의

08자가 점검

0 / 6 완료0%
x

09과제

자신의 실제 업무 시트(주간 리포트, 재고 현황, 고객 문의 정리, 예약 접수 등) 중 하나를 골라, 이번 실습과 같은 흐름(읽기 → 가공 → 쓰기 → 알림)의 자동화 스크립트를 만들어본다. 마땅한 업무 시트가 없다면 가상의 예시 데이터로 새 시트를 만들어 실습해도 된다.

제출 형식① 실행 결과 스크린샷 ② Apps Script 코드가 담긴 사본 시트 공유 링크 ③ 사용한 프롬프트와 AI 응답 요약을 하나의 문서로 정리해 제출한다.

10더 알아보기

  • Apps Script 공식 문서트리거 종류와 서비스별(MailApp, SpreadsheetApp 등) 메서드 목록 확인용
  • Google Workspace 할당량 한도 안내실행 시간·이메일 발송 한도의 최신 수치는 여기서 확인
트리거(Trigger)
특정 시점이나 이벤트가 발생했을 때 스크립트를 자동으로 실행시키는 예약 장치.
Apps Script
구글 시트·문서·드라이브 등을 자동화하기 위해 제공되는 자바스크립트 기반 스크립팅 환경.
웹앱 배포
Apps Script 프로젝트를 URL을 가진 웹페이지 형태로 공개해, 스크립트 편집기 없이도 실행할 수 있게 하는 기능.

다음 차시 예고 다음 차시에서는 구글 시트 밖에 있는 외부 API를 연결해, 남이 만든 데이터를 내 시트로 끌어오는 법을 다룹니다.