2026-02-21

구글 스프레드시트 앱스크립트(GAS)로 자동 이메일 발송하기

구글 스프레드시트 앱스크립트(GAS)로 자동 이메일 발송하기

직접 해봤는데, 매일 수십 명에게 이메일을 보내는 단순 반복 업무만큼 지치는 일이 없더라고요. 아마 이 글을 클릭하신 분들도 비슷한 고민을 하고 계실 것 같아요. 그래서 오늘은 복사 붙여넣기 지옥에서 벗어나게 해줄 마법 같은 자동화 방법을 준비했습니다.

매일 수십 명에게 이메일을 보내는 단순 반복 업무만큼 지치는 일이 없더라고요. 아마 이 글을 클릭하신 분들도 비슷한 고민을 하고 계실 것 같아요. 그래서 오늘은 복사 붙여넣기 지옥에서 벗어나게 해줄 마법 같은 자동화 방법을 준비했습니다.



바로 앱스 스크립트(GAS)를 활용한 방법인데요. 

코딩을 몰라도 괜찮습니다! 제가 옆에서 알려드리듯 차근차근 설명해 드릴 테니, 잘 따라와 주시면 퇴근 시간을 최소 1시간은 앞당기실 수 있을 거예요. 자, 그럼 시작해 볼까요?


구글 스프레드시트 자동 이메일 기능을 실무에 적용하면 단순 반복 업무를 획기적으로 줄일 수 있어요. 특히 대량의 고객에게 인보이스를 보내거나 공지사항을 돌릴 때 이만한 도구가 없죠.


구글에서 이메일을 보내는 스크립트 서비스는 크게 MailApp과 GmailApp 두 가지로 나뉩니다.

구글에서 이메일을 보내는 스크립트 서비스는 크게 MailAppGmailApp 두 가지로 나뉩니다.


  • MailApp: 메일 발송에만 특화되어 있어 권한 요구가 적고 가볍습니다. 단순 알림이나 보고서 발송에 좋아요.
  • GmailApp: 받은편지함 접근, 라벨 관리, 임시보관함 등 지메일의 모든 기능을 다룰 수 있습니다.


이 부분이 핵심입니다. 

상황에 맞는 서비스를 골라야 해요. 일반적인 알림 메일이라면 사용자에게 과도한 권한을 요구하지 않는 MailApp을 사용하는 것이 훨씬 유리합니다.

또한 2026년 기준 서비스 할당량도 꼭 알아두셔야 해요. 일반 무료 계정(gmail.com)이나 워크스페이스 무료 체험 계정은 하루에 100명까지만 메일을 보낼 수 있습니다. 유료 워크스페이스 계정으로 전환하고 일정 조건(누적 100달러 결제 및 60일 경과)을 충족해야 하루 1,500명까지 발송 한도가 늘어난다는 점, 잊지 마세요!

앱스 스크립트 초보자도 쉽게 따라 하는 이메일 대량 발송 방법을 단계별로 차근차근 알려드릴게요. 먼저 스프레드시트 상단 메뉴에서 [확장 프로그램] - [Apps Script]를 클릭해 편집기를 열어주세요.

스프레드시트 상단 메뉴에서 [확장 프로그램] - [Apps Script]를 클릭해 편집기를 열어주세요.


여기서 많은 분들이 실수해요. 

초보자분들이 가장 많이 하는 실수가 반복문 안에서 getValue()를 사용해 데이터를 한 줄씩 불러오는 것입니다. 이렇게 하면 서버 통신이 너무 많이 발생해서 스크립트가 느려지고, 최악의 경우 6분 실행 시간 제한에 걸려 에러가 날 수 있어요.

반드시 getValues()를 사용해서 시트의 데이터를 2차원 배열 형태로 한 번에 메모리로 불러온 다음 처리해야 합니다. 이 방식이 자바스크립트 엔진 속도로 작동하기 때문에 훨씬 빠릅니다.

그럼 시트에 있는 이름(A열)과 이메일 주소(B열)를 불러와 메일을 보내는 간단한 코드를 살펴볼까요?



function sendBulkEmails() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // 1행이 헤더라고 가정하고, 2행부터 마지막 행까지 데이터를 한 번에 가져옵니다.
  const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();

  data.forEach(function(row) {
    const name = row;
    const email = row;

    // 이메일 주소가 비어있지 않은 경우에만 발송
    if(email !== "") {
      const subject = name + "님, 안내 메일입니다.";
      const body = "안녕하세요 " + name + "님, 이메일이 성공적으로 발송되었습니다.";

      MailApp.sendEmail(email, subject, body);
    }
  });
}


위 코드를 붙여넣고 [실행] 버튼을 누르면 끝입니다! 

처음 실행할 때는 구글의 접근 권한 승인 창이 뜨는데, '고급'을 눌러 안전하지 않음으로 이동을 클릭해 주시면 됩니다.

현장에서 확인한 실무 꿀팁을 적용하면, 구글 스프레드시트 자동 이메일 시스템을 훨씬 더 안정적이고 전문적으로 운영할 수 있어요.


제가 현장에서 확인한 결과, 메일을 수동으로 보내는 것보다 '설치 가능한 트리거(Installable Triggers)'를 사용하는 것이 훨씬 편리했습니다. 앱스 스크립트 좌측의 시계 모양 아이콘(트리거)을 클릭하면, "매일 아침 9시"처럼 원하는 시간에 알아서 스크립트가 실행되게 만들 수 있어요. 출근하기도 전에 시스템이 알아서 업무를 처리해 주는 거죠!


또한, 고객에게 조금 더 예쁘고 전문적인 메일을 보내고 싶다면 HTML 템플릿을 활용해 보세요. 순수 텍스트 대신 HtmlService를 이용하면, 폰트 색상을 바꾸거나 표를 넣는 등 깔끔한 웹페이지 형식의 메일을 발송할 수 있습니다.


구글 스프레드시트 메일 발송과 관련해 실무자들이 자주 묻는 질문 3가지를 모아봤습니다.


Q1. 메일이 중간에 안 보내지고 에러가 나요! 

A: 일일 메일 전송 제한(Daily Quota)에 걸렸을 확률이 높습니다. MailApp.getRemainingDailyQuota() 함수를 사용하면 오늘 남은 발송 가능 횟수를 확인할 수 있어요. 이 값을 조건문으로 걸어두면 에러를 미리 방지할 수 있습니다.


Q2. 구글 드라이브에 있는 PDF 파일도 첨부해서 보낼 수 있나요? 

A: 네, 가능합니다! DriveApp.getFileById('파일아이디')를 통해 파일을 불러온 뒤, getAs(MimeType.PDF)로 변환하여 메일 발송 시 attachments 옵션에 넣어주면 쉽게 첨부파일을 보낼 수 있습니다.


Q3. 데이터가 너무 많아서 스크립트가 자꾸 멈춥니다. 

A: 구글 앱스 스크립트는 한 번 실행될 때 최대 6분까지만 작동하도록 제한되어 있습니다. 만약 데이터가 너무 많다면, 한 번에 처리하지 말고 데이터를 나누어 처리(배치 처리)한 뒤 상태를 저장해두는 방식이 필요해요.


오늘 알아본 내용을 바쁜 분들을 위해 3가지 포인트로 요약해 드릴게요.

  1. 서비스 선택: 단순 발송은 MailApp, 지메일의 세부 기능이 필요하면 GmailApp을 사용하세요. 일일 한도(무료 100건, 유료 최대 1,500건) 확인은 필수입니다.
  2. 효율적인 코드: 반복문 안에서 데이터를 하나씩 부르지 말고, getValues()를 통해 메모리로 한 번에 올려서 처리해야 속도 저하를 막을 수 있습니다.
  3. 자동화의 완성: '시간 기반 트리거'를 설정하여 정해진 일정에 메일이 자동으로 발송되게 만들어 보세요.

어떠신가요? 생각보다 어렵지 않죠? 

오늘 배운 코드를 바로 여러분의 스프레드시트에 적용해 보세요. 작은 자동화 하나가 여러분의 소중한 업무 시간을 크게 아껴줄 겁니다. 해보시다가 막히는 부분이 있다면 언제든 댓글로 남겨주세요. 제가 직접 경험한 노하우를 바탕으로 답변해 드리겠습니다!