moai's blog

ソフトウェア開発にまつわる内容を記載します。

Gmailを検索してサマリーを自分のメールアドレスに送るスクリプト

なにこれ

Gmailを検索してサマリーを自分のメールアドレスに送るGoogle App Script

スクリプトの事前手順

事前手順とかは、こちらをご覧ください。 blog.ryamazaki.com

スクリプト本体

function engKintaiMailGrep() {
  var yesterday = new Date();
  // ここをよしなな検索条件にすると適当に取ってこれます。
  var threads = GmailApp.search('subject:勤怠 newer:' + getYesterdayDateString());
  // Logger.log(threads.length);
  var offPeopleSubjects = threads.map(function(thread) {
    var firstMessage = thread.getMessages()[0];
    var subject = firstMessage.getSubject();
    // Logger.log(subject);
    var offWordInTitle = subject.match(/休み|やすみ|欠勤|全休/);
    var offWordInBody = firstMessage.getPlainBody().match(/休み|やすみ|欠勤|全休/);
    // Logger.log(offWordInTitle);
    // Logger.log(offWordInBody);
    var is_off = offWordInTitle || offWordInBody
    return is_off ? subject : null
  });
  var compactedOffPeopleSubjects = offPeopleSubjects.filter( function(subject){ return subject } );
  // Logger.log(compactedOffPeopleSubjects);
  var compactedOffPeopleSubjectsJoinsNewline = compactedOffPeopleSubjects.join("\n");
  // Logger.log(compactedOffPeopleSubjectsJoinsNewline)
  // 今回は誰かのメールに通知するために、最後にmailを送る処理を書いてます。
  GmailApp.sendEmail("hogehoge@hogehoge.com", "今日のお休み", compactedOffPeopleSubjectsJoinsNewline);
}


/**
  昨日の日付を取ってくる
**/
function getYesterdayDateString(){
  var today = new Date();
  var yesterday = new Date();
  yesterday.setDate(yesterday.getDate() - 1);
  return yesterday.getFullYear() + '/' + (yesterday.getMonth() + 1) + '/' + yesterday.getDate();
}

定期実行手順

定期実行手順とかも、こちらをご覧ください。 blog.ryamazaki.com