코멘토 로고

생성형 AI를 활용해서 이메일 대량 전송하기

춤추는 단축키 스타

저처럼 사무직을 하는 비개발자라면 수십, 수백명에게 대량으로 이메일을 커스텀해서 보내야하는 경우가 있을텐데요.

제가 직접 생성형 AI를 통해서 만들고, 실제로도 사용했던 스크립트도 함께 공유드립니다!

이거 하나만 알아도 대량 메일 보내기 작업을 초초초 간단하게 끝낼 수 있을거에요! 💌

--

🛠️ 우리가 만들 기능은?

  • 스프레드시트에서 이름, 이메일 주소를 읽고,
  • 개인화된 메일 내용을 만들어,
  • 메일을 자동으로 발송한 뒤,
  • 보냈는지 상태까지 업데이트!

이게 다 한 번에 가능하다니, 신기하지 않나요? 🤩

--

먼저, AI에게 이렇게 부탁해 보세요:

 

나는 채용전문가이고, 채용 공고 지원을 위해 제출해야하는 서류에 대해서 안내를 하기 위해 Gmail로 여러사람에게 대량으로 동시에 이메일을 보내야하는데, 구글스프레드 시트에 적힌 정보를 통해서 대량 메일을 보낼 수 있는 방법을 알려줄래?

 

1) 나는 주로 gmail을 사용하고 있고 윈도우 10환경의 pc를 사용하고 있어.
2) 참여자들이 설문조사를 입력하면, 구글스프레드시트의 "이메일 명단" 탭에 A열부터 E열까지 입력한 정보가 시트로 정리가 돼.
3) A열부터 순번, 이름, 전화번호, 지원직무, 이메일이 기록되어 있어.
4) 아래와 같은 메일 본문으로 작성하려고하고, 메일 내용의 템플릿은 "메일 전송 내용"이라는  탭에 A1셀에 입력되어 있어.
5) 메일 본문 내용
안녕하세요 000님,
000 직무에 지원해주셔서 감사합니다.

아래 링크를 통해서 제출 서류를 다운로드 받으셔서 회신 부탁드리니다.
감사합니다.
6) 메일 내용에 이름을 넣어 개인화하고 메일을 발송한 후에는 발송 상태를 "이메일 명단" 탭 F열에 업데이트하는 방법을 알려줘

---
그러면 아래와 같이 AI가 답변을 남겨줄거에요!

아무래도 g메일을 사용한다고 하다보니 Apps 로 알려주고 있네요! 아래 Apps 코드도 함께 공유드릴테니, 각자 환경과 상황, 내용에 맞게 활용해보셔도 좋을것 같네요!
---
function sendEmails() {
  // 스프레드시트와 시트 가져오기
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var dataSheet = spreadsheet.getSheetByName("이메일 명단");
  var templateSheet = spreadsheet.getSheetByName("메일 전송 내용");
  
  // 템플릿 내용 가져오기
  var emailTemplate = templateSheet.getRange("A1").getValue();
  
  // 데이터 범위 가져오기
  var lastRow = dataSheet.getLastRow();
  var dataRange = dataSheet.getRange("A2:E" + lastRow);
  var data = dataRange.getValues();
  
  // 각 행별로 이메일 전송
  for(var i = 0; i < data.length; i++) {
    if(data[i][4] && !dataSheet.getRange("F" + (i+2)).getValue()) { // 이메일이 있고 발송되지 않은 경우
      var name = data[i][1];  // 이름
      var position = data[i][3];  // 지원직무
      var emailAddress = data[i][4];  // 이메일 주소
      
      // 이메일 내용 개인화
      var emailBody = emailTemplate
          .replace("000님", name + "님")
          .replace("000 직무", position + " 직무");
      
      // 이메일 전송
      try {
        MailApp.sendEmail({
          to: emailAddress,
          subject: position + " 지원 서류 제출 안내",
          body: emailBody
        });
        
        // 발송 상태 업데이트
        dataSheet.getRange("F" + (i+2)).setValue("발송완료");
        
        // 과도한 요청 방지를 위한 지연
        Utilities.sleep(1000);
      } catch(e) {
        dataSheet.getRange("F" + (i+2)).setValue("발송실패");
      }
    }
  }
}
---
실제 예시 아래와 같이 탭을 설정했더니,


이렇게 메일이 왔고!

발송완료까지!!

의견존중하는 문서 아티스트

김자동님 대단하시네요. 좋은 사례 감사합니다!