이번에는 앱스 스크립트 사용법 (1) 메일 보내기 를 확장해서 여러 명에게 메일 보내는 방법을 알아보겠습니다.
방법은 아주 간단합니다.
메일을 여러 사람에게 보낼 때 to에 여러 개의 메일 주소를 쓰는 것과 동일합니다.
메일 주소를 넣어야 하는 곳에 여러 개의 메일 주소를 콤마(,)로 구분하여 넣어주시면 됩니다.
▼메일 보내기 스크립트 코드 중 메일 주소 설정 부분:
var my_email = "<메일주소>@gmail.com"; // 본인 메일주소를 넣어주세요.
▼여러개의 메일을 보낼 때의 코드
var my_email = "<메일주소 1>, <메일주소 2>, <메일주소 3>";
끝입니다. 참 쉽죠?
하지만. 여기서 끝나면 조금 아쉬우니, 메일 주소를 시트에서 가져오는 기능을 추가해보겠습니다.
개요
- 환율 정보를 수집하는 [환율]시트와 이메일 리스트를 관리할 [email list]시트 두개를 준비한다.
- [환율]시트에서 수집한 환율 정보를 가져온다.
- [email list]시트에 적어놓은 이메일 주소 여러 개를 가져와서 메일 보내기.
- Google Apps Script 개발자 사이트에서 참고한 페이지
시트 준비하기
코드 작성하기 전에, 기존에 환율 정보를 수집하던 시트의 이름은 [환율]로 설정했습니다.
그리고 이메일 주소를 가져올 새로운 시트를 추가합니다. 새로운 시트 이름은 [email list]으로 설정했습니다. 참고로, 이메일만 입력할 시트이므로 A열만 남겼습니다.
그리고 A열에 이메일을 여러 개 적었습니다.
스크립트 편집기 열기
도구 > 스크립트 편집기 메뉴를 클릭합니다.
스크립트 편집 화면에 아래 코드를 넣습니다.
코드
function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); // [환율]시트에서 환율 정보 가져오기. var exrate_sheet = ss.getSheetByName('환율'); // 오늘 날짜 var date_today = new Date(); // 달러 환율 var exchange_rate_usd = exrate_sheet.getRange(6, 2).getValues(); // 엔화 환율 var exchange_rate_jpy = exrate_sheet.getRange(11, 2).getValues(); // [email list]시트의 A열에서 이메일 주소 가져오기. var mailsheet = ss.getSheetByName('email list'); var rangeA = mailsheet.getRange('A:A'); var mailvalues = rangeA.getValues(); // get all data in one call var cnt = 0; var mail_list = Array(); for (var row in mailvalues) { for (var col in mailvalues[row]) { if(mailvalues[row][col] != ""){ mail_list[cnt] = mailvalues[row][col]; cnt++; } } } // 여러개의 이메일을 , 로 묶기 var recipient = mail_list.join(','); // 알람 메일 준비 var email_subject = "환율 알림"; var htmlbody = "시간: " + Utilities.formatDate(date_today, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm") + " 달러 환율: " + exchange_rate_usd + " 엔화 환율: " + exchange_rate_jpy; // 메일 보내기 MailApp.sendEmail({ to: recipient, subject: email_subject, htmlBody: htmlbody, }); }
스크립트 실행
▶(실행)버튼을 클릭합니다.
필요할 경우 스크립트 권한을 설정해주시기 바랍니다.
(스크린샷은 생략합니다. 자세한 내용은 앱스 스크립트 사용법 (1) 메일 보내기 > 실행 권한 허용 을 확인해주세요.)
스크립트를 실행하면, 메일이 송신됩니다.
송신된 메일 주소의 받는 사람에 [email list] 시트에 적은 여러 개의 이메일이 있는 것을 확인할 수 있습니다.
구글 앱스 스크립트의 다른 활용법을 알고싶으시다면!
» G Suite 사용법 #5 앱스 스크립트 활용 예시 모음
자료를 감사히 보고 있습니다.
근데 실습과정에서 11번행에서 Error가 나는데 원인을 모르겠네요…
같은 ‘내 드라이브’ 폴더에 있고… Sheet이름도 똑같이 했는데…
좋아요좋아요
답을 찾았네요… 같은 파일에서 작업을 해야했는데… 시트명을 파일명으로 작업을 해서 오류가 난 것으로 확인했습니다.
파일/폴더가 다르거나 여러 파일의 내용을 메일로 보내는 건 어떻게 하면 될까 궁금하네요?
좋아요좋아요
다른 스프레드시트의 내용을 가져오는 것이 불가능하지는 않지만, 코드가 많이 복잡해지지고 관리도 쉽지 않을것같아서 추천드리기 어렵습니다.
importrange 함수를 사용하여 다른 스프레드시트의 내용을 한 스프레드시트에 모은 후, 그 스프레드시트에서 이메일을 보내는 것을 추천드립니다.
IMPORTRANGE
https://support.google.com/docs/answer/3093340?hl=ko
좋아요좋아요