ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Apps] 구글 앱스를 이용해 여러 사람에게 이메일 자동 발송하기
    구글/구글 앱스 2022. 9. 20. 20:45
    반응형

      구글 앱스(Google Apps)를 이용해 이메일을 발송하는 기초적인 방법을 소개합니다. 구글 앱스는 자바스크립트 기반의 자동화 도구입니다. 구글 앱스를 이용해 이메일 보내기, 취합하기, 데이터 리포트 등의 반복적인 작업을 자동화할 수 있습니다. 이번 포스팅에서는 MailApp.sendEmail 메소드를 이용하여, 구글 스프레드시트 상에 기재된 이메일 주소/제목/본문 내용을 이메일로 발송해 봅니다. 기본적인 메일 발송 방법과 스프레드시트 연동 방법을 알 수 있습니다.

     


    구글 앱스에서 메일 발송하기

    구글 앱스에서는 다양한 기능을 제공한다. 개별적인 기능은 구글 앱스 페이지에 자세히 정리가 되어 있다. 

     

    이메일 발송하기는 MailApp의 sendEmail 이라는 메소드를 이용해 발송할 수 있다. 구글 스프레드시트의 내용을 참고하기 전에 간단히 특정 주소로 고정된 컨텐츠를 발송해 보도록 하겠다.

     

    MailApp의 sendEmail의 상세 정보는 아래 구글 도움말에서 참고할 수 있다. 

    https://developers.google.com/apps-script/reference/mail/mail-app

     

    Class MailApp  |  Apps Script  |  Google Developers

    이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Class MailApp 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 메일 앱 이메일을

    developers.google.com

     


    구글 스프레드시트에서 앱스 실행하기

     

    아래 구글 앱스는 스프레드시트의 확장 프로그램에서 앱스 스크립트를 편집하고 실행할 수 있다. 

     

    Apps script 실행 위치

     

    위 메뉴를 실행하면 앱스 스크립트를 편집하고 배포할 수 있는 화면이 나온다. 가운데 붉은 박스로 표시한 부분이 앱스 스크립트를 편집할 수 있는 영역이다. 

     

    앱스 스크립트 편집화면

     

    사실 처음 편집화면을 보면 개발자 도구로 보여서 긴장하게 된다. 하지만 대부분 목적에 맞는 정형화된 코드가 구글 상에서 존재한다. 그 코드를 복사&붙여넣기를 한 다음, 최소한의 수정만으로 원하는 바를 달성할 수 있다. 누구나 개발자가 될 필요는 없다. 구글 앱스 스크립트를 사용하기 위해 아래 사항만 있으면 된다. 

     

    • 탁월한 구글링 실력
    • 스크립트에 대한 기본적인 이해와 약간의 수정 능력

     


     

    sendEmail을 이용해 초간단 이메일 보내기

    다소 복잡한 이메일을 보내기 전에 텍스트로 구성된 간단한 이메일을 MailApp.sendEmail을 이용해 발송해 보자. 

     

    위에서 App Script 를 열었다면 코드 영역이 아래의 코드를 복사해 보자. 

    function SendMail(){
    	try {
        	MailApp.sendEmail({
    		to : "email address", // 1. 메일 발송 주소
    		subject : "첫 번째 이메일입니다", // 2. 메일 제목
    		body : "여기는 메일 본문을 쓰는 영역입니다 ", // 3. 메일 본문
              });
                
            console.log("발송 성공");
            
         } catch(err){
         	console.log("발송 실패 - " + err);     
         }
    }

      

    코드에 대한 간단한 설명을 하자면,
    MailApp.sendEmail 메소드에 to/subject/body의 정보를 집어넣어 메일을 발송한다. 만약 메일 발송이 성공하면 콘솔 로그에 "발송 성공"을 표시하고, 실패하면 "발송 실패" 표시한다. 에러가 발생했는지 여부는 try~catch 구문으로 판단한다. 콘솔에 메시지를 찍는 것은 console.log가 담당한다.  회색 글자로 표시되는 // 뒷 부분은 코멘트로, 코드에 대한 참고 내용을 기록하는 공간이다. 

     

     

     

    MailApp.sendEmail은 메일 발송을 담당하는 메소드로, 메일과 관련된 다양한 옵션을 설정할 수 있다. 구체적으로 구글 앱스 도움말에 나오는 옵션은 아래와 같다. 내용이 복잡하여 필수적인 사항만 추가한다.

    이름 유형 설명
    bcc String 숨은 참조(쉼표로 구분)
    body String 이메일 본문
    cc String 참조 목록(쉼표로 구분)
    htmlBody String 이메일 본문(HTML을 이용해 구성할 경우).
    name String 이메일 발신자 이름
    noReply Boolean 회신 가능 여부(true/false)
    replyTo String 회신 주소(기본값: 사용자의 이메일 주소)
    subject String 이메일의 제목
    to String 수신자의 이메일 주소(쉼표로 구분)

     

    가령 참조를 추가하고 싶다면, 아래와 같이 위의 예제 코드에서 cc를 파라메타로 추가하면 된다. 2번 숨은 참조를 보시라.

    function SendMail(){
    	try {
        	MailApp.sendEmail({
    		to : "email address", // 1. 메일 발송 주소
    		cc : "cc email addr", // 2. 숨은 참조 주소
    		subject : "첫 번째 이메일입니다", // 3. 메일 제목
    		body : "여기는 메일 본문을 쓰는 영역입니다 ", // 4. 메일 본문
              });
                
            console.log("발송 성공");
            
         } catch(err){
         	console.log("발송 실패 - " + err);     
         }
    }

     

    이제 앱스 스크립트에 위의 코드를 추가하여 메일을 발송해 보겠다. 위 코드는 발송주소 to, 참조 주소 cc에 임의의 값을 넣었기 때문에, 복사하더라도 실제 발송할 이메일 주소로 직접 수정하기를 바란다. 

     

    앱스 스크립트 이메일 보내기

     

    위의 붉은색 박스에서 코드를 저장하고 실행해 보자.

     

    이메일 보내기의 경우 최초 실행 시점에 이메일 발송 권한을 체크해야 한다. 아래 팝업이 나오는데 허용을 해주면 됩니다.

     

     

    아래 실행 로그를 보면, 정상적으로 메일이 발송되었음을 확인할 수 있다. 

     

    구글 앱스 스크립트 실행 로그

     

     

    실제로 내 계정으로 이메일도 도착했음을 알 수 있다. 

     

     

     


    스프레드시트의 여러 메일주소로 동시에 발송하기

    이메일을 한 통만 보낸다면, 지메일을 이용하는 것이 더 편리하다. 하지만 한 번의 액션으로 이메일을 다수에게 동시에 발송하거나, 개인마다 조금씩 메일 내용이 변해야 한다면 구글 앱스를 이용하는게 더 낫다. 이번 장에는 구글 스프레드시트의 이메일 주소정보를 참조하여 한 번에 발송하는 방법을 알아보고자 한다.

     

     

     

    스프레드시트의 정보를 참조하는 방법

    스프레드시트의 정보를 참조하는 방법은 기본적으로 엑셀과 유사하다. 엑셀 스크립트를 이용해 보았다면 금방 이해할 수 있다. 스프레드시트에서 특정 셀의 정보를 가져오는 개략적인 흐름은 아래와 같다.

    1. getActiveSpreadsheet() 로 스프레드시트 객체를 가지고 온다.
    2. getActiveSheet() 로 활성화된 시트 객체를 가지고 온다
    3. getRange로 시트의 셀의 위치를 특정하고, getValue()를 이용해 값을 가지고 온다.

    참조할 구글 스프레드시트의 구성은 아래와 같다. 
    스프레드시트에서 메일주소, 제목, 본문을 가지고 와서 한 번에 이메일 발송을 해보겠다. 
    B칼럼에는 이메일 주소, C칼럼에는 제목, D칼럼에는 텍스트로 구성된 본문이 들어있다.

     

     

    참고로 문제를 단순화하기 위해서, 기본적으로 위 시트가 활성화된 시트라고 가정을 한다. 

     

    아래 완성된 코드에서 시트 정보를 가져오는 부분은 아래와 같다. 

     

    상세한 스프레드시트 메소드는 아래 링크에서 참고하기 바란다.

     

    https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet

     

    Class Spreadsheet  |  Apps Script  |  Google Developers

    이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Class Spreadsheet 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 스프레드시트

    developers.google.com

     

    시트에 기재된 여러 메일 주소로 발송하기

    아래는 스프레드시트의 이메일/제목/본문 정보를 참고하여 메일을 발송하는 코드이다.

     

    코드가 좀 복잡한데, 처리 방식을 설명하면 아래와 같다.

    • 현재 활성화된 시트를 읽어온다.
    • 활성화된 시트의 2번 행부터 98번행까지, B/C/D 칼럼을 반복적으로 읽는다.
    • B칼럼의 이메일 주소가 공백이 아니라면, C/D 칼럼에 있는 제목과 설명을 메일로 발송한다.
    • 만약 B칼럼의 값이 공백이라면 반복실행을 중단한다. 
    function SendMail(){
    	try {
    
        var activeSS = SpreadsheetApp.getActiveSpreadsheet(); // 현재 활성화된 스프레드시트 얻기
        var activeSheet = activeSS.getActiveSheet(); 
    
        for(let index=2; index<99; index++){ // 최대 99 셀까지 반복적으로 실행
    
          email = activeSheet.getRange("B"+index).getValue(); // B칼럼의 메일 주소를 순차적으로 가져옴
          mail_subject = activeSheet.getRange("C"+index).getValue(); // C칼럼의 제목을 순차적으로 가져옴
          mail_body = activeSheet.getRange("D"+index).getValue(); // D칼럼의 본문을 순차적으로 가져옴
    
          if (email !==  ""){ // 이메일 주소가 존재할 경우, 메일 발송
    
            MailApp.sendEmail({
              to : email, // 1. 메일 발송 주소
              subject : mail_subject, // 3. 메일 제목
              body : mail_body, // 4. 메일 본문
            });
    
            console.log(email, mail_subject, "--> 발송 성공");
    
          }else{
    
            console.log("B"+index + "에 메일 주소 없음. 발송 중단 처리");
            break; // 셀에 있는 내용을 다 발송하여 루프를 중단함
          }
                        
        }
            
         } catch(err){
         	console.log("발송 실패 - " + err);     
         }
    }

     

    위 코드를 동일한 방법으로 실행해 보자. 콘솔에서 잘 실행되었음을 확인할 수 있다. 

     

    실제로 위 예제에서 작업했던 스프레드시트를 공유한다. 참고로 이메일 주소는 개인정보 이슈로 삭제했다. 앱스 스크립트 메뉴에 들어가면 실제 코드를 볼 수 있다. 

     

    https://docs.google.com/spreadsheets/d/14cM408QJMcPaVv-BPNXEmCKVG_7UpzTOVEvPxnrWRPc/edit?usp=sharing 

     

    이상 앱스 스크립트로 이메일을 다량 발송하는 기능이었다. 


     

    마무리

     

    이번에는 앱스 스크립트를 이용해, 스프레드시트에 있는 메일을 자동으로 발송하는 스크립트를 작성해 보았다. MailApp의 파라메타도 함께 소개하여, 참조/숨은참조 등도 자유롭게 수정할 수 있으리라 기대한다. 다음번에는 앱스 스크립트를 배포하여 쉽게 사용할 수 있는 방법과 좀 더 복잡한 본문을 구성하는 방법에 대해 소개하겠다. 

     

    반응형

    댓글

Designed by Tistory.