본문 바로가기
업무꿀팁/앱스 스크립트

앱스 스크립트(Apps Script) 여러 명에게 메일 보내기 (대량 메일, 단체 메일, 메일 발신 업무 자동화)

by 민트녹차 2021. 11. 21.

안녕하세요. 이번 시간에는 구글 앱스 스크립트(Google Apps Script)를 이용하여 여러 명에게 메일을 발송하는 방법에 대해 알아보겠습니다. 일정한 양식의 내용을 여러 명에게 각각 발송해야 하는 경우 아주 유용하게 활용할 수 있습니다.

앱스-스크립트-여러-명에게-메일-보내기-제목-이미지
앱스 스크립트 여러 명에게 메일 보내기

 

들어가기 전에...

만약, 구글 앱스 스크립트(Google Apps Script)를 처음 접하시는 분은 아래 링크에서 앱스 스크립트에 대한 기본 개념과 실행방법에 대한 설명을 먼저 보고 오시는 것을 추천드립니다. 실행방법을 모르는 상태에서 아래 내용을 보시면 이해되지 않는 부분이 있을 수 있습니다. 그럼, 이제 앱스 스크립트를 이용하여 메일을 발송하는 방법에 대해 알아보겠습니다.

구글 앱스 스크립트(Google Apps Script) 실행하기 (개념, 실행방법, 업무 자동화)

 

구글 앱스 스크립트(Google Apps Script) 실행하기 (개념, 실행방법, 업무 자동화)

안녕하세요. 오늘은 업무 자동화를 위해 알아두면 아주 편리한 구글 앱스 스크립트(Google Apps Script)에 대해서 알아보도록 하겠습니다. 구글 앱스 스크립트란 무엇인지, 그리고 어떻게 실행하고

melonmilk.tistory.com

 

앱스 스크립트를 이용하여 여러 명에게 메일 발송하기

스프레드시트 작성

새 스프레드시트를 생성하고 시트에 아래와 같이 내용을 작성합니다.

스프레스시트에-메일-발송에-필요한-내용을-입력한-이미지
스프레드시트에 메일 관련 내용 작성

  • A2 셀 : 메일 제목 내용
  • A4 셀 : 메일 본문 내용(HTML 양식으로 작성되어 있습니다.)
  • A7~ 셀 : 번호
  • B7~ 셀 : 수신인 이름
  • C7~ 셀 : 수신인 메일 주소
  • D7~ 셀 : 메일 발송 결과

앱스 스크립트 함수 생성 및 실행

스프레드시트 내용 작성이 완료되면 상단의 [확장 프로그램] 메뉴에서 [Apps Script] 메뉴를 선택합니다. 앱스 스크립트 프로젝트 페이지에 접근하게 되면 아래와 같이 SendMail 함수를 생성합니다.

function SendMail() {
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();

    var subject = sheet.getRange("A2").getValue();	// A2 셀에서 메일 제목 가져오기
    var body = sheet.getRange("A4").getValue();	// A4 셀에서 메일 내용 가져오기

    for(let index=7; index<12; index++){
      try{
        var name = sheet.getRange("B"+index).getValue();  // B 열에서 수신인 가져오기
        var address = sheet.getRange("C"+index).getValue();  // C 열에서 메일 주소 가져오기

        MailApp.sendEmail({
          to: address,  // 메일 주소
          subject: name+subject,  // 메일 제목
          htmlBody: body,  // 메일 내용
        });

        sheet.getRange("D"+index).setValue("완료");	// 실행결과를 D 열에 기록하기(성공)
      }catch(e){
        sheet.getRange("D"+index).setValue("실패");	// 실행결과를 D 열에 기록하기(실패)
      }
    }

    console.log("[+] 성공!");
  } catch(e){
    console.log("[+] 실패! ("+e+")");
  }
}

 

 

코드를 좀 더 세분화 해서 보도록 하겠습니다. 현재 스프레드시트를 'ss' 변수에 할당하고, 현재 스프레드시트의 현재 시트를 'sheet' 변수에 할당합니다.

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();

 

현재 시트의 A2(메일 제목), A4(메일 내용) 셀 값을 'subject', 'body' 변수에 할당합니다.

    var subject = sheet.getRange("A2").getValue();	// A2 셀에서 메일 제목 가져오기
    var body = sheet.getRange("A4").getValue();	// A4 셀에서 메일 내용 가져오기

 

for문을 이용하여 현재 시트의 7행부터 11행까지 수신자 정보를 가져와서 메일을 발송합니다. for문에서 'index' 변수가 7부터 시작하는 이유는 수신인 정보가 기입된 첫 번째 셀이 현재 시트의 7행이기 때문입니다. 현재 시트의 B열에서는 수신인 이름을 가져와서 'name' 변수에 할당하고, C열에서는 메일 주소를 가져와서 'address' 변수에 할당하고 순차적으로 index 값을 증가시켜 메일을 발송하는 코드를 실행시킵니다. 그리고 마지막으로 메일 발송 결과를 D열에 기록합니다.

    for(let index=7; index<12; index++){
      try{
        var name = sheet.getRange("B"+index).getValue();  // B 열에서 수신인 가져오기
        var address = sheet.getRange("C"+index).getValue();  // C 열에서 메일 주소 가져오기

        ... 메일을 발송하는 코드 ...

        sheet.getRange("D"+index).setValue("완료");	// 실행결과를 D 열에 기록하기(성공)
      }catch(e){
        sheet.getRange("D"+index).setValue("실패");	// 실행결과를 D 열에 기록하기(실패)
      }
    }

 

위에서 가져온 정보를 이용하여 메일을 발송하는 코드입니다. 메일 제목과 관련된 'subject' 키 값은 수신인 이름과 메일 제목 내용이 합쳐집니다. 첫 번째 수신인을 예로 들면, 수신인인 '메론우유'와 메일 제목인 '님, 안녕하세요. 메일 발송 테스트입니다.'라는 문자열이 합쳐져 '메론우유님, 안녕하세요. 메일 발송 테스트입니다.'라고 제목으로 메일이 발송됩니다.

        MailApp.sendEmail({
          to: address,  // 메일 주소
          subject: name+subject,  // 메일 제목
          htmlBody: body,  // 메일 내용
        });

 

함수 작성이 완료되면 코드를 저장하고 실행합니다. 앱스 스크립트 앱에서 구글 계정의 액세스 허용 여부를 묻는 메시지 창이 출력됩니다. 위 코드를 보시면 'SpreadsheetApp', 'MailApp' 클래스가 선언되어 있기 때문에 이 두 가지 기능과 관련된 권한의 허용 여부를 물어봅니다. 아래의 [허용] 버튼을 클릭하여 위 두 가지 권한을 부여합니다.

앱스-스크립트-앱의-계정-액세스-권한-요청을-허용하는-이미지
앱스 스크립트 앱의 계정 액세스 권한 요청 허용

SendMail 함수 실행이 완료되면, 앱스 스크립트 실행 로그가 아래 그림과 같이 출력됩니다.

앱스-스크립트-실행-로그가-출력되는-이미지
앱스 스크립트 실행 로그 확인

 

스프레드시트에서 메일 발송 결과 확인

앱스 스크립트 실행이 완료되고, 위에서 작성한 스프레드시트를 확인해보면 D 열의 '결과' 입력란에 메일 발송 성공을 알려주는 '완료'라는 문자열이 입력되어 있는 것을 확인할 수 있습니다. 이를 통해 수신인 5명에게 메일이 정상적으로 발송되었다는 이력을 확인할 수 있습니다.

스프레드시트에서-메일-발송-결과를-확인하는-이미지
스프레드시트에서 메일 발송 결과 확인

수신 메일 내용 확인

'메론우유' 수신인의 메일함을 확인해보면, 아래와 같은 형태로 메일이 도착한 것을 확인할 수 있습니다.

수신된-메일-내용을-확인하는-이미지
수신 메일 내용 확인

 

마치며...

오늘은 업무 자동화의 대표적인 예로 앱스 스크립트를 이용하여 여러 명에게 메일을 발송하는 방법에 대해 알아보았습니다. 위 소스코드를 상황에 맞게 편집해서 사용하시면 수신인이 여러 명이더라도 메일 발송을 수월하게 할 수 있을 겁니다. 오늘도 긴 글 읽어주셔서 감사합니다.

 

댓글