공식 문서를 우선 확인해 작성했습니다. 가격·기능·정책은 바뀔 수 있으므로 글 끝의 원문 링크에서 최종 조건을 확인하세요.
Google Sheets 자동화는 거대한 시스템을 만들 때보다, 이미 잘 쓰고 있는 시트에서 복사·붙여넣기 한 단계를 없앨 때 효과가 크다. Google Apps Script를 사용하면 Sheets에 메뉴를 추가하고, 시간 또는 편집 이벤트를 트리거로 쓰며, Gmail·Drive·Calendar 같은 Google 서비스와 연결할 수 있다.
처음에는 원본을 직접 수정하지 않는 자동화부터 시작하자. 복사본 시트에 결과를 쓰고 사람이 확인한 뒤 운영 데이터에 반영하면 오류 범위를 줄일 수 있다.
1. CSV 파일 자동 가져오기
상황: 매일 이메일이나 Drive 폴더에 쌓이는 주문·광고 CSV를 한 시트에 붙인다.
Google의 공식 자동화 샘플은 지정한 Drive 폴더의 CSV 파일을 읽어 스프레드시트에 추가하고, 처리한 파일을 다른 폴더로 옮기는 흐름을 보여 준다. 여기서 실무에 필요한 안전장치는 다음과 같다.
- 파일명만이 아니라 처리한 파일 ID를 기록한다.
- 열 개수와 헤더 이름이 예상과 다르면 중단한다.
- 가져온 행 수와 처리 시각을 로그 시트에 남긴다.
- 원본 CSV는 바로 삭제하지 않고 보관 폴더로 옮긴다.
2. Gmail 메일 병합
상황: 고객 이름과 상태에 따라 안내 메일을 개별 발송한다.
시트의 각 행을 읽어 Gmail 임시보관함을 템플릿으로 사용하는 방식이다. 제목과 본문에서 {{이름}}, {{만료일}} 같은 값을 바꾼다.
첫 실행에서 전체 고객에게 보내지 않는다. 본인 주소 2~3개만 있는 테스트 시트를 만들고 제목, 줄바꿈, 링크, 수신 거부 문구를 확인한다. 발송 완료 시간과 Gmail 메시지 ID를 기록하면 중복 발송을 막는 데 도움이 된다.
Apps Script와 Gmail에는 일일 할당량이 있다. 대량 마케팅 발송 도구의 대체재로 쓰기 전에 현재 계정의 제한과 관련 법규를 확인해야 한다.
3. Calendar 일정을 근무 기록으로 집계
상황: 상담, 프로젝트 회의, 외근 시간을 주간 시트로 모은다.
Google 공식 샘플에는 Calendar 이벤트를 Sheets 타임시트로 가져오는 예제가 있다. 이벤트 시작·종료 시각, 제목, 설명을 읽어 고객 또는 프로젝트 코드를 분류할 수 있다.
주의할 점은 시간대다. 스프레드시트, Apps Script 프로젝트, Calendar의 시간대가 다르면 날짜 경계가 어긋날 수 있다. 세 곳을 동일한 지역으로 맞추고, 자정을 넘는 일정과 종일 일정의 처리 규칙을 정한다.
4. 견적서·청구서를 PDF로 만들기
상황: 시트 한 행의 고객·금액 정보를 템플릿에 채워 PDF로 저장하고 메일 초안을 만든다.
공식 ‘Generate & send PDFs’ 샘플은 스프레드시트 데이터를 기반으로 청구서 PDF를 만들고 Drive에 저장하는 흐름을 제공한다. 이를 실제 결제 문서에 사용하려면 다음을 추가한다.
- 문서 번호의 중복을 검사한다.
- 세금과 반올림 규칙을 별도 셀에 고정한다.
- 발행 전 미리보기 또는 승인 상태를 둔다.
- 생성한 PDF의 Drive ID와 해시 또는 수정 시각을 기록한다.
- 발송 실패와 문서 생성 실패를 구분한다.
자동 생성은 회계·세무 요건을 대신 확인해 주지 않는다. 실제 증빙 문서로 사용할 때는 필요한 항목을 전문가와 확인한다.
5. 매주 상태 보고서 만들기
상황: 프로젝트 시트의 완료, 진행, 지연 건수를 집계해 한 장의 요약으로 만든다.
시간 기반 트리거가 매주 금요일 오후에 데이터를 읽고 담당자별 현황을 새 탭에 만든다. 차트 이미지를 이메일로 보내기보다 먼저 원문 시트 링크와 집계 기준을 제공하면 숫자가 달라졌을 때 원인을 찾기 쉽다.
빈 셀을 0으로 볼지 ‘미입력’으로 볼지 구분한다. 자동화에서 가장 흔한 오류는 계산식보다 입력 기준이 사람마다 다른 데서 생긴다.
6. 편집 시 데이터 검증과 알림
상황: 상태가 ‘승인’으로 바뀌었는데 담당자나 기한이 비어 있으면 경고한다.
단순한 검증은 Sheets의 데이터 유효성 검사와 조건부 서식만으로 충분하다. Apps Script 트리거는 외부 알림이나 여러 셀을 함께 확인해야 할 때 추가한다.
단순 onEdit 트리거와 설치형 트리거는 권한과 실행 범위가 다르다. 이메일 발송처럼 승인이 필요한 서비스는 설치형 트리거가 필요할 수 있다. 누가 트리거를 만들었고 그 계정이 중지되면 어떻게 되는지도 운영 문서에 남긴다.
7. 여러 시트의 월간 데이터 합치기
상황: 지점·담당자별 시트를 한 요약 시트로 모은다.
각 원본의 헤더와 데이터 타입을 확인한 뒤 배열에 모아 한 번에 출력한다. 셀을 한 칸씩 읽고 쓰면 실행이 느려지므로 Google은 범위 값을 배열로 읽고 일괄 처리하는 방식을 권장한다.
원본 시트 이름을 코드에 흩어 놓지 말고 ‘설정’ 탭에 목록으로 둔다. 누락된 시트, 헤더 변경, 중복 키가 있으면 요약을 만들기 전에 오류 목록을 보여 준다.
첫 자동화의 공통 구조
Apps Script 편집기에서 바로 코드를 쓰기 전에 시트에 다음 탭을 준비하면 운영이 쉬워진다.
| 탭 | 역할 |
|---|---|
원본 |
사람이 입력하거나 외부에서 가져온 데이터 |
설정 |
폴더 ID, 상태값, 수신자 등 변경 가능한 값 |
결과 |
자동화가 만든 결과. 원본과 분리 |
로그 |
실행 시각, 처리 건수, 오류, 실행자 |
스크립트 속성이나 Credentials에 둘 비밀값을 시트 셀에 공개하지 않는다. 다른 사람에게 시트를 공유할 때 스크립트와 연결된 권한도 함께 검토한다.
배포 전 체크리스트
- 원본 파일 또는 시트 복사본이 있다.
- 테스트 계정과 5행 이하의 샘플로 실행했다.
- 빈값, 중복값, 잘못된 날짜를 넣어 봤다.
- 중간 단계 실패 시 재실행해도 중복 처리되지 않는다.
- 트리거 소유자와 알림 수신자가 정해져 있다.
- 실행 할당량을 넘었을 때의 수동 절차가 있다.
공식 자료
- Google Apps Script 샘플
- Apps Script로 Google Sheets 확장하기
- CSV를 Sheets로 가져오는 자동화 샘플
- Calendar 일정을 타임시트로 가져오는 샘플
- PDF 생성 자동화 샘플
- Gmail 메일 병합 샘플
문서 확인일: 2026년 7월 13일. Apps Script 할당량과 서비스 권한은 계정 유형 및 정책에 따라 달라질 수 있다.