구글 폼 부가기능 설치로 이메일 자동 발송 설정하기

구글 폼 부가기능 설치로 이메일 자동 발송 설정하기

증상 확인: 수동 메일 발송에 지친 당신을 위한 진단

구글 스프레드시트에 입력된 데이터를 바탕으로, 개별적으로 혹은 대량으로 이메일을 보내야 하는 업무를 하고 계신가요? 수동으로 복사-붙여넣기를 반복하거나, 매번 Gmail을 열어 새 메일을 작성하는 과정은 시간 낭비이자 human error(인간 실수)를 유발하기 쉽습니다. “구글 폼으로 응답이 올 때마다 자동으로 확인 메일을 보내고 싶다”. “스프레드시트의 고객 리스트에게 주기적으로 뉴스레터를 발송해야 한다”와 같은 요구는 바로 이 가이드의 해결 대상입니다.

원인 분석: 자동화의 부재와 권한 문제

구글 스프레드시트 자체에는 이메일 발송 기능이 내장되어 있지 않습니다. 따라서 외부의 힘을 빌려야 합니다. 여기서 ‘부가기능(Add-on)’이 해결책이 됩니다. 가장 일반적인 원인은 두 가지입니다. 첫째, 적절한 부가기능을 찾지 못했거나, 둘째, 설치 후 스크립트 실행 권한이나 이메일 발송자 설정을 제대로 구성하지 않은 경우입니다. 본 가이드는 가장 강력하고 무료로 널리 쓰이는 ‘Google Apps Script’를 활용한 방법을 중점적으로 다룹니다.

주의사항: 시작 전 반드시 확인할 보안 준칙

경고: 자동 발송 시스템은 강력한 만큼 책임이 따릅니다. 테스트 없이 대량 발송을 실행하면 스팸 메일로 분류되거나, 의도치 않은 수신자에게 메일이 전송될 수 있습니다. 모든 설정을 마친 후, 반드시 자신의 이메일로 1-2회 테스트 발송을 수행하여 내용, 형식, 발송 주기가 정확한지 확인하십시오. 더불어, 이 방법은 기본적으로 스프레드시트를 연 계정(Gmail 주소)으로부터 메일이 발송됨을 이해해야 합니다.

해결 방법 1: 기본 도구 ‘Google Apps Script’로 핵심 자동화 구현하기

별도 설치가 필요 없는, 구글 워크스페이스에 내장된 스크립트 편집기를 사용하는 방법입니다. 가장 근본적이고 유연한 컨트롤이 가능합니다.

  1. 데이터가 있는 구글 스프레드시트를 열고, 상단 메뉴에서 확장 프로그램 > Apps Script를 클릭합니다. 새 탭에서 스크립트 편집기가 열립니다.
  2. 기본 생성된 myFunction 코드를 모두 삭제하고, 아래의 기본 발송 스크립트를 복사하여 붙여넣습니다.

    function sendEmails() {
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var dataRange = sheet.getDataRange();
      var data = dataRange.getValues();

    // 데이터의 첫 행(인덱스 0)은 보통 헤더(제목)입니다, 건너뛰기 위해 i=1부터 시작. for (var i = 1; i < data.length; i++) {
        var row = data[i];
        var recipientEmail = row[0]; // A열: 수신자 이메일 주소
        var subject = row[1]; // B열: 메일 제목
        var messageBody = row[2]; // C열: 메일 본문

    // 간단한 유효성 검사: 이메일 주소가 있는 행만 처리
        if (recipientEmail) {
          MailApp.sendEmail(recipientEmail, subject, messageBody);
          // 발송 기록을 D열에 남기고 싶다면 아래 주석을 해제하세요. // sheet.getRange(i+1, 4).setValue(‘발송 완료: ‘ + new Date());
        }
      }
    }
  3. 스크립트 저장과 권한 부여: 상단의 프로젝트 이름(기본 ‘Untitled project’)을 클릭해 ‘자동메일발송’ 등으로 변경한 후 저장(Ctrl+S 또는 Cmd+S)합니다. 이후 실행 버튼(삼각형 아이콘)을 처음 클릭하면 ‘권한 확인’ 화면이 나타납니다. 본인의 구글 계정을 선택하고, ‘허용’을 클릭하여 스크립트가 스프레드시트 데이터를 읽고 메일을 보낼 수 있는 권한을 부여합니다.
  4. 스프레드시트 데이터 준비: 스크립트 편집기 창을 닫고 스프레드시트로 돌아갑니다, a열에 수신자 이메일, b열에 메일 제목, c열에 메일 본문을 입력합니다. 위 스크립트는 이 구조를 기준으로 합니다.
  5. 테스트 실행: 스프레드시트에서 다시 확장 프로그램 > Apps Script로 이동, sendEmails 함수를 선택한 후 실행 버튼을 눌러 테스트합니다. 자신의 이메일을 A열에 넣고 발송이 잘 되는지 확인하십시오.

해결 방법 2: 트리거 설정을 통한 완전 자동화 (폼 응답 시 발송)

위 방법은 수동 실행입니다. 구글 폼 제출 시 자동으로 실행되게 하려면 ‘트리거(Trigger)’를 설정해야 합니다.

  1. 방법 1의 Apps Script 편집기에서, 왼쪽 메뉴의 트리거 아이콘(시계 모양)을 클릭합니다.
  2. 화면 하단의 트리거 추가 버튼을 클릭합니다.
  3. 트리거 설정 창이 열리면 다음을 구성합니다:
    • 실행할 함수: sendEmails (또는 직접 만든 함수명)
    • 실행할 배포: Head
    • 이벤트 소스: 스프레드시트에서
    • 이벤트 유형: 양식 제출 시
  4. 저장을 클릭합니다. 역시 최초 설정 시 권한 허용이 필요할 수 있습니다.
  5. 이제 구글 폼에 새로운 응답이 제출될 때마다, 연결된 스프레드시트에 새 행이 추가되고, sendEmails 함수가 자동으로 실행되어 해당 행의 데이터로 메일이 발송됩니다. 주의: 폼 응답 전체가 아닌 가장 최신 행만 처리하도록 스크립트를 수정해야 할 수 있습니다. 이는 고급 튜닝 항목입니다.

고급 튜닝: 최신 폼 응답만 메일 발송하기

트리거 사용 시, 매번 전체 시트를 스캔하는 것은 비효율적입니다. 아래 함수는 마지막 행(방금 제출된 폼 응답)만 처리합니다.

function sendEmailOnFormSubmit(e) {

  // ‘e’는 이벤트 객체로, 트리거 실행 시 자동으로 전달됨

  var range = e.range; // 응답이 작성된 범위

  var row = range.getRow(); // 응답 행 번호

  var sheet = range.getSheet();

// 해당 행의 데이터 가져오기 (컬럼 인덱스 조정 필요)

  var recipientEmail = sheet.getRange(row, 1).getValue(); // A열

  var subject = sheet.getRange(row, 2).getValue(); // B열

  var messageBody = sheet.getRange(row, 3).getValue(); // C열

if (recipientEmail) {

    MailApp.sendEmail(recipientEmail, subject, messageBody);

  }

}

트리거를 설정할 때 실행할 함수를 sendEmailOnFormSubmit으로 지정하면 됩니다. 이 방식이 더 효율적이고 안전합니다.

해결 방법 3: 서드파티 부가기능을 통한 빠른 설치 (초보자용)

코딩이 부담스럽다면, 스토어에서 제공하는 부가기능을 사용할 수 있습니다. 유료 기능이 있는 경우가 많지만, 기본적인 발송은 무료로 제공하는 툴들이 있습니다.

  1. 구글 스프레드시트에서 확장 프로그램 > 부가기능 > 부가기능 가져오기를 클릭합니다.
  2. 부가기능 스토어 창이 열리면 검색창에 “Yet Another Mail Merge” 또는 “Form Mule” 등을 검색합니다. 이들은 평판이 좋고 널리 사용되는 도구입니다.
  3. 원하는 부가기능을 선택하여 설치를 클릭하고, 안내에 따라 계정 권한을 허용합니다.
  4. 설치가 완료되면 스프레드시트의 확장 프로그램 메뉴 아래에 해당 부가기능 이름이 나타납니다. 메뉴를 클릭하면 친절한 마법사 UI가 나타나 수신자, 제목, 본문 필드를 매핑하고 발송 일정을 설정할 수 있습니다.

장단점 비교:

  • 장점: 코드 작성 불필요, 사용자 인터페이스가 직관적, 템플릿 기능 등 추가 편의성 제공.
  • 단점: 무료 버전은 일일 발송량 제한이 있을 수 있음, 고도화된 커스터마이징에는 한계가 있음.

전문가 팁: 안정성과 효율성을 20% 높이는 설정

Pro Tip 1: HTML 형식 메일 및 첨부파일 추가. MailApp.sendEmail() 함수는 HTML 본문과 첨부파일을 지원합니다. 평문 대신 풍부한 형식의 메일을 보내려면 아래 옵션을 사용하십시오. 스프레드시트의 특정 셀에 이미지 URL이나 HTML 코드를 저장해 활용할 수 있습니다.

MailApp.sendEmail({

  to: recipientEmail,

  subject: subject,

  htmlBody: htmlContent, // HTML 형식의 본문 변수

  attachments: [DriveApp.getFileById(‘파일ID’).getBlob()] // 구글 드라이브 파일 첨부

});

Pro Tip 2: 발송 실패 로그 기록 필수. 대량 발송 시 일부 주소로의 발송이 실패할 수 있습니다. try…catch 문을 사용하여 오류를 포착하고, 별도의 시트나 로그 컬럼에 실패 내역(이메일 주소, 오류 메시지, 시간)을 기록하는 로직을 추가하십시오. 이는 문제 추적과 재발송에 반드시 필요합니다.

이처럼 시스템의 안정성을 확보하기 위해 예외 상황을 기록하고 대비하는 자세는 데이터 전송이 핵심인 모든 디지털 작업에 필수적입니다. 이메일 자동화 스크립트에서 로그를 통해 전송 성공률을 관리하듯, 실시간 영상 송출 환경에서도 자신의 네트워크 자원을 객관적으로 파악하고 최적의 수치를 설정하는 과정이 선행되어야 합니다. 특히 끊김 없는 방송을 위해서는 OBS 비트레이트 계산기: 내 인터넷 속도에 맞는 방송 설정을 활용하여 현재 대역폭이 감당할 수 있는 데이터의 한계를 명확히 인지하는 것이 중요합니다. 발송 로그가 전송의 무결성을 보장하는 지표가 되듯, 인터넷 속도에 최적화된 비트레이트 값은 방송 도중 발생할 수 있는 프레임 드랍이나 예기치 못한 송출 중단을 사전에 방지하는 가장 확실한 ‘예외 처리’ 전략이 될 것입니다.

Pro Tip 3: 할당량 인지하기. Google Apps Script의 MailApp은 무료 계정 기준 하루 100건의 이메일 발송 제한이 있습니다. Gmail의 일반 SMTP 한계와는 별개입니다. 대량 발송이 필요하다면, 업무용(G Suite) 계정으로 전환하거나 발송 간격을 두는 스크립트를 설계해야 합니다.

최종 점검: 자동 발송 시스템 가동 전 체크리스트

모든 설정을 마쳤다면, 아래 항목을 최종 확인하십시오.

  • 테스트 발송을 본인 및 동료에게 보내어 내용과 형식이 정상인지 확인 완료.
  • 스프레드시트 데이터 컬럼(이메일, 제목, 본문)과 스크립트에서 참조하는 컬럼 인덱스가 일치하는지 재확인.
  • 트리거를 설정한 경우, 의도한 이벤트(양식 제출 시)로 정확히 설정되었는지 확인.
  • 발송 로그를 기록할 컬럼을 지정했거나, 문제 발생 시 확인할 방법을 마련해둠.
  • 구글 계정의 보안 설정이 ‘보안 수준이 낮은 앱 액세스’를 허용하지 않아도 되는 방법(즉, OAuth 2.0을 사용하는 Apps Script 방식)으로 구성되었는지 이해함. 본 가이드의 방법은 해당 보안 설정 변경이 필요 없습니다.

이제 구글 폼과 스프레드시트는 더 이상 정적인 데이터 수집 도구가 아닙니다. 설정한 자동 발송 시스템을 통해 실시간 응답 알림, 등록 확인, 정기 보고서 배포 등 동적인 커뮤니케이션 허브로 변환되었습니다, 코드 한 줄과 설정 몇 가지로 반복적인 업무에서 해방되십시오.

로드 중, 잠시만 기다려주세요...