일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 전자계약시스템
- 모두싸인
- 모두싸인마케터
- 전자계약서
- map
- 아이폰12
- 아이폰
- 블록체인
- 습관
- 전자계약솔루션
- 전자계약서비스
- 알고리즘
- 독서리뷰
- javascript
- atomichabits
- 코딩테스트
- 온라인계약
- 자릿수더하기
- 모두싸인마케팅
- 갤럭시노트20
- 아주작은습관의힘
- 옥소폴리틱스
- 모두의사인
- 자바스크립트
- 독후감
- 마케팅
- 전자계약
- 모두사인
- 좋은습관
- 아이폰13
- Today
- Total
찰리의 이야기
구글 스프레드시트 앱스크립트 단체메일 개인화로 보내기 본문
구글 스프레드시트 앱스크립트 단체메일 개인화로 보내기
다수에게 이메일을 보내야하는데, 단체로 이메일을 보내려면
상대방으로 하여금 상당히 성의가 없어보이게 보내거나,
아니면 결국은 1:1로 하나하나 이메일을 보내야하는 어려움을 겪게 된다.
이를 구글 스프레드시트와 앱스크립트를 이용해서 구현해보았다.
구글 스프레드시트의 확장프로그램에는 앱스크립트(Apps Script)가 있는데,
아래처럼 확인해볼 수 있다.
구글 앱 스크립트는 구글 솔루션들과 서드파티 서비스간에 자동화를 쉽게 하기 위해서 만들어졌다.
그래서 이 기능을 만들때에도 지메일과 구글 드라이브를 쉽게 가져와서 자동화를 만들어 보는 것이다.
요약해보자면, 아래와 같은 내용으로 구성되어 있다.
1. 스프레드 시트에 이메일에 필요한 정보를 구성한다.
2. 앱스크립트에서 스프레드시트의 내용을 가져온다.
3. 스프레드시트의 길이만큼 반복하여 이메일을 발송하는 앱스크립트를 작성한다.
4. 이메일을 발송할 때 구글 드라이브에서 첨부파일을 불러온다.
1. 스프레드 시트에 이메일에 필요한 정보를 구성한다.
스프레드 시트에는 이메일을 보낼 제목과
그리고 이메일 본문을 미리 작성해야 한다.
그리고 또한 이메일 대상자들의 수집된 이메일 리스트도 구성해야한다.
수신인, 이메일주소, 결과 정도로 구성해보았다.
2. 앱스크립트에서 스프레드시트의 내용을 가져온다.
let ss = SpreadsheetApp.getActiveSpreadsheet();
// 스프레드시트 가져오기
let sheet = ss.getActiveSheet();
// 스프레드시트에서 현재 활성화된 시트 가져오기
let subject = sheet.getRange("A2").getValue();
// 시트에서 범위로 값을 가져오기
let body = sheet.getRange("A4").getValue();
결국은 스프레드 시트에서 A2란에서 이메일 제목을 적어두고
A4란에는 이메일 본문을 구성해두고 가져오는 과정이다.
이 이메일 본문은 html 형태로 가져와야하는데,
네이버 블로그 등의 에디터에서 글을 작성한 다음,
편하게 html모드로 변경하면 html 형태의 글을 작성할 수 있으니
이용하면 도움이 될 것 같다.
3. 스프레드시트의 길이만큼 반복하여 이메일을 발송하는 앱스크립트를 작성한다.
let file = DriveApp.getFilesByName(fileName);
let childFile = file.next();
for(let i=7; i<12; i++){
try{
let name = sheet.getRange("B"+i).getValue();
let address = sheet.getRange("C"+i).getValue();
MailApp.sendEmail({
to: address,
subject: name+subject,
htmlBody: body,
attachments: [childFile.getAs(MimeType.PDF)]
});
sheet.getRange("D"+i).setValue("완료");
}catch(e){
sheet.getRange("D"+i).setValue("실패");
console.log(e);
}
for 반복문을 사용하는데
index가 7부터 사용하는 이유는
그저 스프레드시트의 7번째 줄부터 이름과 이메일이 작성되어 있기 때문이다.
B열의 7번째 열부터 사용하기 위함이다.
4. 이메일을 발송할 때 구글 드라이브에서 첨부파일을 불러온다.
그리고 DriveApp은 여러가지 메서드를 가지는데,
그 중 이름으로 구글 드라이브의 파일을 찾을 수 있는 메서드가
.getFilesByName('파일이름')이다.
그리고 attachments: [childFile.getAs(MimeType.PDF)] 이렇게
보내기만 하면 된다.
처음엔 권한 오류가 발생하길래
구글 드라이브의 공유 권한 문제인가 싶어서 찾아봤는데,
사실 권한은 첨부파일을 넣을때
이 구글 드라이브에 접근해서 구글앱스를 동작시키는 인물만 접근가능하면 된다.
받아보는 사람들에게는 권한이 필요하진 않는다.
그것보다는 구글 드라이브에서 이름으로 검색했을 때
검색되지 않는 경우일 수 있으니, 꼭 파일 이름으로 검색이 되는지 확인해보길 바란다.
구글 스프레드시트 앱스크립트 단체메일 개인화로 보내기
'찰리: 개발이야기(Engineering)' 카테고리의 다른 글
구글 스프레드시트 앱스크립트 체크박스 이메일 보내기 (8) | 2022.05.20 |
---|---|
Next.js 카카오맵 구현 (0) | 2021.09.30 |
Next.js Script Component 스크립트 컴포넌트 (0) | 2021.09.29 |
리액트웹으로 코르도바 안드로이드 앱 만들기(react cordova android) (1) | 2020.10.27 |