【GAS】자동 메일 송신 만들어 보았다.
소개
자사 업무로 멤버의 근무상황 메일의 송신상황을 체크하고, 송신하지 않은 사람에게 개별적으로 촉구 연락하는 것이 어려웠기 때문에, 이전부터 신경이 쓰였던 GAS를 사용해 자동화해 보았다.
※GAS의 사용법 등은, 여기에서는 기재하지 않는다
규칙
・근태 보고
금요일부터 월요일까지, 근무 연락 메일을 제출하는 것
・메일 체크
월요일 18시에 자동 실행시켜, 메일 송신하고 있지 않은 멤버에게, 촉구의 메일을 송신한다
※ GAS의 실행 시간의 설정 방법도 여기에서는 기재하지 않는다
구현
function mailSend(e) {
// メールタイトル
let mailSubject = "【勤務連絡未提出】";
// スプレッドシートの情報
let ss = SpreadsheetApp.getActiveSheet();
let dr = ss.getDataRange();
let lr = dr.getLastRow();
let values = dr.getValues();
// メール送信フラグ
let bMailSend = false;
// 送信対象フラグ
let isMailSend = false;
// 受信メールを取得
const messagesForThreads = searchContactMail();
// 未送信者へのメール内容を取得
const mailBody = getMailBody();
// 実施日を記述
let now = new Date();
//取得した現在日時を指定した表示形式に変換
var time = Utilities.formatDate(now, "Asia/Tokyo", "yyyy/MM/dd HH:mm:ss");
// 現在日時を取得
ss.getRange(1, 4).setValue(time);
for (let i = 2; i < lr; i++) {
// values[i][1]←の0~3の数字はスプレッドシートの列数。A列が0,B列が1...
// 対象者のメールアドレス
let TargetAddress = values[i][1];
// 初期化
isMailSend = false;
for(const messages of messagesForThreads){
// 対象者が4日以内に勤務連絡を送信しているか判定
if ( messages[0].getFrom().match(TargetAddress)) {
// スプレットに記述
ss.getRange(i + 1, 3).setValue('送信済');
isMailSend = true;
break;
}
}
// メール送信処理
if (!isMailSend) {
// スプレットに記述
ss.getRange(i + 1, 3).setValue('送信していない!');
// 名前
let name = values[i][0];
// 対象者のメールアドレス
let ToAddress = values[i][1];
//メール内容
let mailhed = name + " さん\n\n";
// 送信
MailApp.sendEmail(ToAddress, mailSubject, mailhed + mailBody);
bMailSend = true;
}
// シートの処理完了を待つ
Utilities.sleep(5 * 1000);
}
if(bMailSend){
Browser.msgBox("メールを送信しました。");
}else{
Browser.msgBox("送信対象がいませんでした。");
}
}
function searchContactMail() {
// 検索条件 ※4日以内に週報を出していない人を条件に指定
const query = 'newer_than:4d subject:【勤務連絡】 ';
const start = 0;
const max = 20;
const threads = GmailApp.search(query, start, max);
const messagesForThreads = GmailApp.getMessagesForThreads(threads);
// 取得したメール情報
return messagesForThreads;
}
function getMailBody() {
// メールの記載内容を記載
return "勤務連絡の提出期限日です。\n";
}
스프레드시트
・A열에 체크 대상자를 기재
・B열에 대상자의 메일 주소를 기재
・C열은 체크시의 메일 제출 상황(자동)
・D1은 실행시간(자동)
덤
스프레드 시트의 탭에서 실행할 수 있도록,
다음을 실행하고 기능을 등록? 함으로써
스프레드시트의 탭에 메일 탭이 생성되고 메일 탭에 '근무 연락 확인'이 생성됩니다.
function onOpen() {
let ss = SpreadsheetApp.getActiveSpreadsheet();
let menuEntries = [];
//スプレッドシートのタブに表示される文字です。
ss.addMenu("メール", menuEntries);
//スプレッドシートのタブ内に表示される文字です。
menuEntries.push({name: "勤務連絡確認", functionName: "mailSend"});
}
결론
GAS를 처음 만졌지만 Gmail과의 연계도 간단하고,
더 여러가지 할 것 같다-라고 생각했습니다.
GAS의 실행 시간 설정 방법과 시간이 가능하면 기사로 할까 생각 중입니다.
검색하면 꽤 나오므로 일부러 쓰는 것도 아닐까 생각하고 있습니다만・・・
참고
· [GAS] Gmail에서 정기적으로 (1 시간마다) 이메일을 보내는 방법
Reference
이 문제에 관하여(【GAS】자동 메일 송신 만들어 보았다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gas-gas/items/5da4ded015ada9821542텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)