DMM英会話のレッスン予約をgoogleカレンダーに自動で登録する方法 2020年1月20日動作確認

DMM英会話のレッスン予約をgoogleカレンダーに自動で登録する方法です。

以下の方が書いてくださってる記事を参考にしてください。 blog.shotarok.com

しかしDMM英会話から送られてくるメールのフォーマットが変更されてしまい、記事の通り作業しても正しく動作しません。 そこで2020年1月20日時点で動作確認したメール文章のフォーマットに基いたコードを以下に書くのでGoogle App Scriptにコピペして動かしてみて下さい。

2020年1月20日時点で動いたコード

//gmailでメールを検索するキーワード(dmmのメールの件名が変わった場合変更する必要がある)
//2020年1月20日時点で動作確認した時に送られてきたメールはこちら。
//画像で確認できます => https://i.gyazo.com/e95a5664d1ed06d0994ed01b605d7ab5.png
var CRITERIA = "from:noreply@eikaiwa.dmm.com subject:レッスン予約 is:unread ";

//プロジェクトのトリガーにmainという関数を登録する必要がある
function main() {
  eachMessage(CRITERIA, function (message) {
    var body = message.getBody();
    
    //本文中からレッスン開始時刻を含むフレーズを抽出する
    var [phrase] = /様、.*とのレッスン予約が完了しました/.exec(body);
    //フレーズからレッスン開始時刻を抽出する
    var [beginAtStr] = phrase.match(/\d{4}\/\d{2}\/\d{2}\ \d{2}\:\d{2}/g);

    var beginAt = new Date(beginAtStr);
    var endAt = new Date(beginAt.getTime() + 30 * 60000);

    createEvent("DMM英会話", beginAt, endAt);
  });
}

function eachMessage(CRITERIA, callback) {
  GmailApp.search(CRITERIA).forEach(function(thread) {
    thread.getMessages().forEach(function(message) {
      callback(message);
      //処理したメッセージは既読にする。
      message.markRead(); 
    });
  });
}

function createEvent(title, startDate, endDate) {
  if (!(title && startDate && endDate)) {
      return;
  }
  var cal = CalendarApp.getDefaultCalendar();
  var event = cal.createEvent(title, startDate, endDate);
  Logger.log('Event ID: ' + event.getTitle() + '[' + startDate + '~' + endDate + '] is created');
}

これをgoogle app scriptのエディタに貼り付けてください。

f:id:chocopie116:20200120005948p:plain
google app scriptに貼り付けるだけ

あとはプロジェクトのトリガーにmainという関数を登録すれば完了。

皆さんの快適なイングリッシュライフを!