송아영
송아영
🐶 AI 찐친
🎖️ 마스터 파트너
🧭 경험 찐친

14기 전자책 스터디 단체 안내 이메일을 위한 구글 앱스크립트 짜기

소개

멤버들에게 안내, 과제, 글쓰기 채찍질을 위한 단체 메일을 편리하게 보내고자 세팅 중입니다~ ^^

진행 방법

클로드 이용해서 앱스크립트 코드를 작성했어요.

이 구글 스프레드시트에 있는 명단의 이메일에 한꺼번에 안내 메일 보낼 수 있는 앱스크립트 짜고 싶어.

네, Google Apps Script를 사용해서 스프레드시트에 있는 모든 이메일 주소로 한 번에 메일을 보내는 스크립트를 작성해드리겠습니다.Google Apps Script for Bulk Email SendingClick to open codePublished이 스크립트를 사용하는 방법을 단계별로 설명해드리겠습니다:

스프레드시트에서 도구(Tools) > 스크립트 편집기(Script editor)를 선택합니다.
새로 열린 스크립트 편집기에 위의 코드를 복사하여 붙여넣습니다.
저장 버튼을 클릭하고 프로젝트 이름을 지정합니다(예: "이메일발송스크립트").
스프레드시트로 돌아가서 페이지를 새로고침하면 상단 메뉴에 "이메일 발송" 메뉴가 추가된 것을 확인할 수 있습니다.
메일 내용을 수정하려면 코드의 emailBody 부분을 원하는 내용으로 수정하시면 됩니다.

주의사항:

처음 실행할 때는 Google 계정 권한 승인이 필요합니다.
Gmail의 일일 전송 한도가 있으므로 대량 발송 시 주의가 필요합니다 (일반적으로 하루 100통 제한).
스크립트는 이메일 발송 실패 시 로그를 기록하여 실패한 이메일을 추적할 수 있습니다.
실제 발송 전에 소수의 테스트 이메일로 먼저 테스트해보시는 것을 권장합니다.

이메일 내용이나 추가 기능이 필요하시다면 말씀해 주세요!

두 말 안해도 잘 짜줍니다.

function sendBulkEmails() {
  // 스프레드시트 가져오기
  const sheet = SpreadsheetApp.getActiveSheet();
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues();
  
  // 첫 번째 행은 헤더이므로 제외
  const headers = data[0];
  const emailColumnIndex = headers.indexOf('이메일');
  const nameColumnIndex = headers.indexOf('이름');
  const nicknameColumnIndex = headers.indexOf('닉네임');
  
  // 메일 내용 설정
  const emailSubject = "지피터스 14기 전자책 안내";
  
  // 실패한 이메일 주소를 저장할 배열
  const failedEmails = [];
  
  // 각 행을 순회하며 이메일 전송
  for (let i = 1; i < data.length; i++) {
    const row = data[i];
    const emailAddress = row[emailColumnIndex];
    const name = row[nameColumnIndex];
    const nickname = row[nicknameColumnIndex];
    
    // 이메일 본문 생성
    const emailBody = `
    ${name}님 안녕하세요,
    
    지피터스 14기 전자책 관련하여 안내드립니다.
    
    [안내 내용을 여기에 작성해주세요]
    
    감사합니다.
    `;
    
    try {
      // 이메일 전송
      MailApp.sendEmail({
        to: emailAddress,
        subject: emailSubject,
        body: emailBody
      });
      
      // 전송 후 잠시 대기 (Gmail 일일 전송 한도를 고려)
      Utilities.sleep(1000);
      
    } catch (error) {
      // 실패한 경우 기록
      failedEmails.push({
        email: emailAddress,
        name: name,
        error: error.toString()
      });
      
      Logger.log(`Failed to send email to ${emailAddress}: ${error}`);
    }
  }
  
  // 실패한 이메일이 있다면 로그에 기록
  if (failedEmails.length > 0) {
    Logger.log('Failed emails:');
    failedEmails.forEach(failure => {
      Logger.log(`${failure.email} (${failure.name}): ${failure.error}`);
    });
  }
  
  // 완료 메시지
  Browser.msgBox('이메일 전송 완료', 
                 `총 ${data.length - 1}개의 이메일 중 ${failedEmails.length}개 실패`, 
                 Browser.Buttons.OK);
}

// 스프레드시트에 메뉴 추가
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('이메일 발송')
    .addItem('전체 발송하기', 'sendBulkEmails')
    .addToUi();
}

구글 시트 -> 확장 프로그램 ->apps script 선택합니다.

앱스 스크립트에서 코드를 붙여넣고 파일 저장과 실행을 차례대로 합니다.
점 3개 누르면 이름도 변경할 수 있습니다.

한국어 한국어 한국어 한국어 한국어 한국어 한국어 한국어

시트로 돌아오면 상단에 이메일 발송 아이콘이 생성된 것 볼 수 있습니다. 신기방기 하죠? ^^

아이콘 클릭하면 이렇게 이메일 보내기 팝업 창이 뜹니다.

한국어 텍스트가 있는 스프레드시트

코드 안에 []안에 시트의 항목 즉, 이메일, 전화번호, 이름, 닉네임을 지정하면 멤버별 개별화 된 이메일을 발송할 수 있겠죠?

아래와 같이 메일도 잘 도착했습니다. 이제 이 코드를 복사해서 전체 명단에 있는 시트에 적용만 하면 되겠죠?

삼성 갤럭시 S7 엣지 QR코드 스크린샷

Tip: 앱스 스크립트 설정시 처음에 권한 요청시 고급 누르셔서 접근을 허용해 주셔야 해요~

Tip: 메일은 하루 100통 정도 리밋있다고 클로드가 그러던데 제가 알고 있기로는 1000통이었던 것 같은데~ 조금 더 확인해 보고 댓글로 정보 추가해 놓겠습니다.

결과와 배운 점

앱스 스크립트 코드 한번에 잘 받아서 수월하게 설정했습니다.

한번에 뚝딱 코드를 받아서 실행까지 슝되니까 카타르시스가 ㅎㅎㅎ~

전자책 스터디 홧팅입니다~ ^^

도움 받은 글

조현정님의 지난 13기 앱스 스크립트 사례 발표에서 아이디어를 얻었습니다~ 갓현정님~!! ^^

8
4개의 답글

👉 이 게시글도 읽어보세요