소개
멤버들에게 안내, 과제, 글쓰기 채찍질을 위한 단체 메일을 편리하게 보내고자 세팅 중입니다~ ^^
진행 방법
클로드 이용해서 앱스크립트 코드를 작성했어요.
이 구글 스프레드시트에 있는 명단의 이메일에 한꺼번에 안내 메일 보낼 수 있는 앱스크립트 짜고 싶어.
네, 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개 누르면 이름도 변경할 수 있습니다.
시트로 돌아오면 상단에 이메일 발송 아이콘이 생성된 것 볼 수 있습니다. 신기방기 하죠? ^^
아이콘 클릭하면 이렇게 이메일 보내기 팝업 창이 뜹니다.
코드 안에 []안에 시트의 항목 즉, 이메일, 전화번호, 이름, 닉네임을 지정하면 멤버별 개별화 된 이메일을 발송할 수 있겠죠?
아래와 같이 메일도 잘 도착했습니다. 이제 이 코드를 복사해서 전체 명단에 있는 시트에 적용만 하면 되겠죠?
Tip: 앱스 스크립트 설정시 처음에 권한 요청시 고급 누르셔서 접근을 허용해 주셔야 해요~
Tip: 메일은 하루 100통 정도 리밋있다고 클로드가 그러던데 제가 알고 있기로는 1000통이었던 것 같은데~ 조금 더 확인해 보고 댓글로 정보 추가해 놓겠습니다.
결과와 배운 점
앱스 스크립트 코드 한번에 잘 받아서 수월하게 설정했습니다.
한번에 뚝딱 코드를 받아서 실행까지 슝되니까 카타르시스가 ㅎㅎㅎ~
전자책 스터디 홧팅입니다~ ^^
도움 받은 글
조현정님의 지난 13기 앱스 스크립트 사례 발표에서 아이디어를 얻었습니다~ 갓현정님~!! ^^