ChatGPT와 Google Apps Script로 노코드 이메일 자동화하기: 5분 만에 시작하는 법

반복 이메일, ChatGPT와 Google Apps Script로 자동화해보기 ( (자세히 보기) (자세히 보기) (자세히 보기)자세히 보기)

업무를 하다 보면 내용은 조금씩 달라도 구조가 비슷한 이메일을 반복해서 작성하게 됩니다. 예를 들어 회의 참석 안내, 자료 제출 요청, 일정 변경 공지처럼 받는 사람과 날짜만 바뀌는 메일이 그렇습니다.

이럴 때 ChatGPT를 단순히 “메일 써줘”라고 사용하는 것보다 한 단계 더 나아갈 수 있습니다. ChatGPT는 이메일 문구와 자동화 로직을 만드는 데 사용하고, Google Apps Script는 Gmail에서 실제로 메일을 처리하는 역할을 맡기는 방식입니다.

특히 이번 예제는 별도의 프로그램을 설치하지 않고 Google 계정과 Gmail, Google Apps Script만으로 시작할 수 있도록 구성했습니다. 다만 회사 계정에서는 관리자가 Apps Script나 외부 AI 서비스 사용을 제한할 수 있으므로 사내 규정을 먼저 확인해야 합니다.

먼저 완성된 모습을 확인해보겠습니다

예를 들어 Google 스프레드시트에 다음처럼 입력했다고 가정해보겠습니다.

이름 이메일 자료명 마감일
홍길동 hong@example.com 9월 영업보고서 9월 30일
이영희 lee@example.com 9월 비용정산서 10월 1일

Apps Script가 이 데이터를 읽으면 첫 번째 행을 바탕으로 다음과 같은 이메일을 만들 수 있습니다.

제목: 9월 영업보고서 제출 요청

홍길동님, 안녕하세요.

9월 영업보고서 제출을 부탁드립니다.

제출 마감일은 9월 30일입니다.

확인 후 기한 내 전달 부탁드립니다.

감사합니다.

두 번째 행에서는 이름, 자료명, 마감일이 자동으로 바뀝니다. 사람이 매번 메일을 복사하고 수정할 필요가 없는 구조입니다.

1단계. Google 스프레드시트에 이메일 목록 만들기

먼저 새 Google 스프레드시트를 만들고 첫 번째 행에 다음 항목을 입력합니다.

A1: 이름
B1: 이메일
C1: 자료명
D1: 마감일
E1: 발송상태

그 아래에 실제 데이터를 넣습니다.

이름 이메일 자료명 마감일 발송상태
홍길동 hong@example.com 9월 영업보고서 9월 30일
이영희 lee@example.com 9월 비용정산서 10월 1일

여기서 발송상태 열을 별도로 두는 것이 실무에서 중요합니다. 자동화가 실행된 뒤 어떤 행을 처리했는지 확인할 수 있기 때문입니다.

2단계. Google Apps Script 열기

스프레드시트 상단 메뉴에서 확장 프로그램 → Apps Script를 선택합니다.

새 편집기가 열리면 기존 코드를 지우고 아래 코드를 넣습니다.

function sendEmails() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const data = sheet.getDataRange().getValues(); for (let i = 1; i < data.length; i++) { const name = data[i][0]; const email = data[i][1]; const documentName = data[i][2]; const deadline = data[i][3]; const status = data[i][4]; // 이미 발송한 행은 건너뜁니다. if (status === "발송완료") { continue; } // 이메일 주소가 없는 행은 건너뜁니다. if (!email) { continue; } const subject = `${documentName} 제출 요청`; const body = `${name}님, 안녕하세요. ${documentName} 제출을 부탁드립니다. 제출 마감일은 ${deadline}입니다. 확인 후 기한 내 전달 부탁드립니다. 감사합니다.`; GmailApp.sendEmail(email, subject, body); sheet.getRange(i + 1, 5).setValue("발송완료"); } }

이 코드에서 특별히 기억할 부분은 많지 않습니다. 스프레드시트의 각 행을 읽은 뒤 이름, 이메일 주소, 자료명, 마감일을 가져오고, 이메일을 보낸 다음 E열에 발송완료라고 기록하는 구조입니다.

처음 실행하면 Google에서 Gmail 접근 권한을 요청할 수 있습니다. 사용하는 Google 계정과 스크립트가 어떤 권한을 요청하는지 확인한 뒤 승인합니다.

3단계. 먼저 실제 수신자에게 보내지 말고 테스트하기

이메일 자동화 과정을 단계별로 확인하는 일러스트

여기서 바로 실무 메일을 대량 발송하는 것은 권하지 않습니다. 처음에는 본인 이메일 주소 하나만 넣어 테스트하는 것이 안전합니다.

예를 들어 스프레드시트를 다음처럼 바꿉니다.

이름 이메일 자료명 마감일 발송상태
테스트 본인 이메일 자동화 테스트 자료 9월 30일

Apps Script에서 sendEmails 함수를 선택하고 실행합니다.

메일이 정상적으로 도착했다면 스프레드시트 E열에 발송완료가 표시되는지 확인합니다.

이 확인 단계가 중요한 이유는 단순히 메일이 도착했는지만 보는 것이 아니기 때문입니다. 데이터 입력 → 메일 생성 → 발송 → 발송 기록이라는 전체 흐름이 정상적으로 작동하는지를 확인해야 합니다.

4단계. ChatGPT를 이용해 이메일 문구를 개선하기

여기서 ChatGPT가 유용해집니다. Apps Script 코드를 직접 고민하는 대신 원하는 이메일의 조건을 구체적으로 입력하면 됩니다.

예를 들어 다음처럼 요청할 수 있습니다.

“직장 동료에게 자료 제출을 요청하는 이메일 문구를 만들어줘. 지나치게 딱딱하지 않게 작성하고, 제목과 본문을 분리해줘. 이름, 자료명, 마감일은 나중에 자동으로 바꿀 수 있도록 변수 위치를 표시해줘.”

그러면 자동화에 넣을 문구의 기본 구조를 만들 수 있습니다. 이후 그 결과를 Apps Script의 subject와 body 부분에 반영하면 됩니다.

중요한 점은 ChatGPT에게 실제 고객명, 전화번호, 주민등록번호, 회사 기밀자료 등을 그대로 입력하지 않는 것입니다. 테스트 단계에서는 가상의 이름과 이메일을 사용하고, 회사 업무에 적용할 때는 사내 AI 사용 정책을 확인해야 합니다.

5단계. 매번 실행하지 않고 자동 실행하기

한 번 실행하는 것에서 끝내지 않고 정해진 시간에 자동으로 실행하도록 만들 수도 있습니다.

Apps Script 화면 왼쪽의 트리거 메뉴에서 새 트리거를 추가하고 다음과 같이 설정합니다.

  • 실행할 함수: sendEmails
  • 이벤트 소스: 시간 기반
  • 실행 주기: 필요한 업무 주기에 맞게 선택

예를 들어 매일 특정 시간에 스프레드시트를 확인하고 미발송 행만 처리하도록 구성할 수 있습니다.

앞서 코드에서 발송완료를 확인하도록 만든 이유도 여기에 있습니다. 자동 실행이 반복되더라도 이미 처리된 행을 다시 보내지 않도록 하는 장치입니다.

대부분 놓치는 부분: 자동 발송보다 ‘중복 발송 방지’가 먼저입니다

업무용 이메일을 확인하며 발송 결과를 점검하는 장면

이메일 자동화에서 처음부터 가장 복잡한 기능을 만들 필요는 없습니다. 오히려 먼저 확인해야 할 것은 같은 메일이 두 번 발송되지 않는가입니다.

예를 들어 스크립트가 오전 9시에 실행된 뒤 오류가 발생해 오후 1시에 다시 실행될 수 있습니다. 발송 여부를 기록하지 않았다면 같은 사람에게 동일한 이메일이 다시 발송될 수 있습니다.

이번 예제에서는 E열의 발송완료 값을 확인해서 이미 처리한 행을 건너뛰도록 했습니다.

실무에서는 여기에 한 단계 더 나아가 발송일시, 오류 상태, 승인 여부 등을 별도 열에 기록할 수도 있습니다.

상태 의미
대기 아직 발송하지 않음
발송완료 메일 발송 작업 완료
오류 처리 중 문제가 발생함

이렇게 상태를 남겨두면 자동화가 제대로 작동했는지 나중에 사람이 확인하기도 쉽습니다.

이 방식이 특히 잘 맞는 업무

  • 정기적인 자료 제출 요청
  • 회의 전 참석자 안내
  • 교육이나 행사 일정 안내
  • 반복적인 업무 리마인드
  • 스프레드시트에 정리된 여러 대상에게 보내는 동일 형식의 안내 메일

반대로 고객별로 내용이 크게 달라지거나 법적 책임이 발생할 수 있는 중요한 안내 메일은 자동 발송보다 사람의 최종 확인 단계를 두는 방식이 적합합니다.

개인정보와 회사 자료는 이렇게 다루세요

자동화 도구를 업무에 도입할 때 가장 먼저 확인할 것은 편리함이 아니라 어떤 데이터가 어디로 전달되는지입니다.

  • 주민등록번호, 계좌번호, 비밀번호 등 불필요한 개인정보를 자동화 데이터에 넣지 않습니다.
  • 고객 명단이나 직원 개인정보를 개인 Google 계정으로 옮기지 않습니다.
  • 회사에서 승인하지 않은 AI 서비스에 내부 문서나 기밀정보를 붙여넣지 않습니다.
  • 외부 발송 전에는 수신자와 첨부파일을 다시 확인합니다.
  • 대량 발송은 Gmail 및 Google 서비스의 발송 한도와 회사 정책을 확인합니다.

특히 ChatGPT를 이용해 이메일 문구를 만들 때는 실제 업무 데이터를 그대로 넣기보다 “고객 A”, “자료 B”, “9월 30일”처럼 비식별화한 예시로 문구를 먼저 작성하는 방법이 안전합니다.

FAQ

Q1. 코딩을 몰라도 사용할 수 있나요?

네. 이번 예제는 Google Apps Script 코드를 직접 설계하기보다 제공된 코드를 복사하고 스프레드시트의 열 구조를 맞추는 방식으로 시작할 수 있습니다. 다만 코드를 수정하거나 자동화를 확장하려면 JavaScript의 기본 문법을 조금씩 익히는 것이 도움이 됩니다.

Q2. ChatGPT가 이메일을 직접 보내주는 건가요?

이 예제의 구조에서는 ChatGPT가 Gmail에 직접 접속해 메일을 보내는 것이 아닙니다. ChatGPT는 이메일 문구와 Apps Script 작성·수정을 돕고, 실제 Gmail 발송은 Google Apps Script의 GmailApp.sendEmail()이 담당합니다.

Q3. 회사 업무에 바로 적용해도 되나요?

사내 규정에 따라 다릅니다. 특히 고객정보, 직원정보, 영업자료처럼 민감한 데이터를 다룬다면 회사의 Google Workspace 관리 정책과 AI 사용 규정을 먼저 확인해야 합니다. 처음에는 본인 계정과 테스트용 데이터로 전체 흐름을 검증한 뒤 실제 업무에 적용하는 편이 안전합니다.

정리하면, 이메일 자동화의 시작점은 복잡한 시스템을 만드는 것이 아닙니다. 스프레드시트에 데이터를 정리하고 → Apps Script가 읽고 → 정해진 형식의 메일을 만들고 → 발송 결과를 기록하는 구조부터 만들면 됩니다.

여기에 ChatGPT를 활용하면 반복적인 이메일 문구를 작성하거나 수정하는 작업까지 줄일 수 있습니다. 처음부터 모든 이메일을 자동화하기보다, 매주 반복되는 한 가지 업무를 골라 테스트하는 것이 실제 업무에 적용하기 쉽습니다.