Google Apps Script에서 지정된 시간에 이메일을 보내는 시스템을 만들었습니다.
개요
어느 날, 문득 생각했습니다. 메일을 지정된 시간에 자동으로 보낼 수 없을까.
그래서 이번에는 Google Apps Script를 사용하여 Google 계정에서 자동으로 이메일을 보내려고 합니다.
Google Apps Script(GAS)란 무엇입니까?
Google Apps Script(약어: GAS)는 Google 앱과 플랫폼(스프레드시트, 양식 등)을 자동으로 처리할 수 있는 Script입니다.
즉, 문서를 사용하여 이메일을 보내거나 스프레드시트를 기반으로 캘린더에 일정을 만들 수 있습니다. 매우 편리! !
GAS는 JavaScript에 Google Apps를 조작하기 위한 API를 갖춘 형태이므로 프로그래밍 초보자도 비교적 노력하기 쉬운 것이 특징입니다.
상세
htps : //에서 ゔぇぺぺrs. 오, ぇ. 이 m / 아 ps-sc 리 pt /
메일 자동 전송 시스템 구축
이번에는 메일 자동 송신 시스템을 구축합니다.
스프레드시트 준비
먼저 스프레드시트 1장을 준비합니다.
그 시트의 1행째에는 헤더를, 2행째 이후에는 자동 송신하고 싶은 메일을 이하와 같이 씁니다.
각 항목의 의미이지만,
항목 이름
쓰기 내용
사람이 쓸 필요가
to
받는 사람
○
title
메일 제목
○
description
메일 본문
○
send_mail
발송 예정일시(메일을 송신하고 싶은 일시)
○
sent_mail
송신 완료 일시(실제로 송신된 일시)
×(스크립트에서 사용됨)
입니다.
스크립트 파일 준비
그런 다음 GAS를 작성하는 스크립트 파일을 준비합니다.
방금 만든 스프레드시트 메뉴에서 도구 >> 스크립트 편집기를 선택하여 스크립트 파일을 만듭니다.
기본적으로 コード.gs
가 만들어지므로 셀 정보를 기반으로 메일을 자동으로 보내는 스크립트를 작성합니다.
스크립트 내용
코드.gsfunction calledByCron() {
var sheet = SpreadsheetApp.getActiveSheet(); // シートの取得
var startRows = 2; // 開始行数
var sheetData = sheet.getSheetValues(startRows, 1, sheet.getLastRow(), sheet.getLastColumn()); // シートのデータを取得(2次元配列)
var dtLimit = new Date(); // 現在時刻を取得
// シートの各行ごとにデータを取り出す
sheetData.forEach(function(value, index) {
// 送信完了していない、かつ送信予定日時が現在時刻より前ならば、メールを送信する
if (!value[4] && (new Date(value[3])).getTime() < dtLimit.getTime()) {
MailApp.sendEmail(value[0], value[1], value[2]); // メールを送信する
sheet.getRange(startRows + index, 4 + 1).setValue(dtLimit); // 送信完了日時をシートに書く
}
});
}
calledByCron()
를 실행하면 메일이 자동으로 전송되는 형태입니다.
덧붙여 처음 실행시에 메일을 자동적으로 송신하는 권한을 허가할지 묻는 것이므로, 허가해 주세요.
실행 예
위의 예에서 2017/09/12 14:56:55에서 calledByCron()
를 실행하면 스프레드 시트의 sent_time
열이 다음과 같이 변경됩니다.
sent_time
열의 두 번째 행에 시간이 자동으로 입력되었습니다. 이는 두 번째 줄에 설정한 메일만 전송되었음을 의미합니다.
그래서 확인을 위해 보낸 이메일을 Gmail에서 열면 ...
성공적으로 두 번째 줄로 설정한 이메일만 전송되었음을 확인할 수 있었습니다. (세 번째 줄의 메일이 전송되지 않았는지 확인했습니다.)
실행 자동화
메일이 송신되는 것을 확인할 수 있었으므로, calledByCron()
를 트리거 설정해 일정 시간 마다 실행하도록 하면, 자동 송신되게 됩니다.
단, 실제 메일의 송신이 최대로 설정보다 트리거 실행 간격분 지연될 가능성이 있으므로, 주의해 주십시오.
덧붙여 설정 가능 트리거 실행 간격은, 최소로 1분마다(※기사 집필시)입니다. 즉, 1분 이내의 지연을 허용할 수 있다면, 이 방법이 유효하게 되는 것입니다.
결론
Google Apps for Business와 같은 Google 서비스를 활용하는 회사는 GAS를 사용하는 방법에 따라 큰 비용 절감 가능성을 느꼈습니다. 😃
한편, 당연합니다만 Google측의 사정으로 서비스를 변경·정지하는 일이 있다(대개, 사전 고지는 있는 것 같습니다만) 때문에, 너무 의존해에는 주의하고 싶네요. (그렇지만, 역시 편리하기 때문에 사용해 버립니다만.)
Reference
이 문제에 관하여(Google Apps Script에서 지정된 시간에 이메일을 보내는 시스템을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KentoDodo/items/4839af8700742a646cea
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 메일 자동 송신 시스템을 구축합니다.
스프레드시트 준비
먼저 스프레드시트 1장을 준비합니다.
그 시트의 1행째에는 헤더를, 2행째 이후에는 자동 송신하고 싶은 메일을 이하와 같이 씁니다.
각 항목의 의미이지만,
항목 이름
쓰기 내용
사람이 쓸 필요가
to
받는 사람
○
title
메일 제목
○
description
메일 본문
○
send_mail
발송 예정일시(메일을 송신하고 싶은 일시)
○
sent_mail
송신 완료 일시(실제로 송신된 일시)
×(스크립트에서 사용됨)
입니다.
스크립트 파일 준비
그런 다음 GAS를 작성하는 스크립트 파일을 준비합니다.
방금 만든 스프레드시트 메뉴에서 도구 >> 스크립트 편집기를 선택하여 스크립트 파일을 만듭니다.
기본적으로
コード.gs
가 만들어지므로 셀 정보를 기반으로 메일을 자동으로 보내는 스크립트를 작성합니다.스크립트 내용
코드.gs
function calledByCron() {
var sheet = SpreadsheetApp.getActiveSheet(); // シートの取得
var startRows = 2; // 開始行数
var sheetData = sheet.getSheetValues(startRows, 1, sheet.getLastRow(), sheet.getLastColumn()); // シートのデータを取得(2次元配列)
var dtLimit = new Date(); // 現在時刻を取得
// シートの各行ごとにデータを取り出す
sheetData.forEach(function(value, index) {
// 送信完了していない、かつ送信予定日時が現在時刻より前ならば、メールを送信する
if (!value[4] && (new Date(value[3])).getTime() < dtLimit.getTime()) {
MailApp.sendEmail(value[0], value[1], value[2]); // メールを送信する
sheet.getRange(startRows + index, 4 + 1).setValue(dtLimit); // 送信完了日時をシートに書く
}
});
}
calledByCron()
를 실행하면 메일이 자동으로 전송되는 형태입니다.덧붙여 처음 실행시에 메일을 자동적으로 송신하는 권한을 허가할지 묻는 것이므로, 허가해 주세요.
실행 예
위의 예에서 2017/09/12 14:56:55에서
calledByCron()
를 실행하면 스프레드 시트의 sent_time
열이 다음과 같이 변경됩니다.sent_time
열의 두 번째 행에 시간이 자동으로 입력되었습니다. 이는 두 번째 줄에 설정한 메일만 전송되었음을 의미합니다.그래서 확인을 위해 보낸 이메일을 Gmail에서 열면 ...
성공적으로 두 번째 줄로 설정한 이메일만 전송되었음을 확인할 수 있었습니다. (세 번째 줄의 메일이 전송되지 않았는지 확인했습니다.)
실행 자동화
메일이 송신되는 것을 확인할 수 있었으므로,
calledByCron()
를 트리거 설정해 일정 시간 마다 실행하도록 하면, 자동 송신되게 됩니다.단, 실제 메일의 송신이 최대로 설정보다 트리거 실행 간격분 지연될 가능성이 있으므로, 주의해 주십시오.
덧붙여 설정 가능 트리거 실행 간격은, 최소로 1분마다(※기사 집필시)입니다. 즉, 1분 이내의 지연을 허용할 수 있다면, 이 방법이 유효하게 되는 것입니다.
결론
Google Apps for Business와 같은 Google 서비스를 활용하는 회사는 GAS를 사용하는 방법에 따라 큰 비용 절감 가능성을 느꼈습니다. 😃
한편, 당연합니다만 Google측의 사정으로 서비스를 변경·정지하는 일이 있다(대개, 사전 고지는 있는 것 같습니다만) 때문에, 너무 의존해에는 주의하고 싶네요. (그렇지만, 역시 편리하기 때문에 사용해 버립니다만.)
Reference
이 문제에 관하여(Google Apps Script에서 지정된 시간에 이메일을 보내는 시스템을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/KentoDodo/items/4839af8700742a646cea
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Google Apps Script에서 지정된 시간에 이메일을 보내는 시스템을 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KentoDodo/items/4839af8700742a646cea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)