DMM英会話の予約メールから自動的にカレンダー予約(2019/9/3改訂版対応)

背景・問題

DMM 英会話を使い始めて9ヶ月近くになる。
DMM 英会話ではレッスンを登録すると、その日時が書かれたメールが届く。
スケジュール管理の都合上、以下の記事を参考に Google カレンダーに自動登録するハックを利用していた。

blog.shotarok.com

しかし、2019/09/03 に予約メールが重複して届くようになり、翌 09/04 には新しいフォーマットのメールのみ届くようになってしまった。

以前のメールフォーマットに依存していたため、これまでのハックが使えなくなってしまった。

原因

システム改訂にともなうフォーマット変更だと思われる。

2019/09/03 までのメール

  • タイトル「【DMM英会話】レッスン予約完了のお知らせ」
  • 送信元 no-reply@eikaiwa.dmm.com

2019/09/03 から後のメール

  • タイトル「レッスンのお知らせ」
  • 送信元 noreply@eikaiwa.dmm.com

解決策

Google Apps Script を少し修正した。

DMMEnglish.gs だけ修正すれば問題ないはず。
レッスン5分前あたりにリマインドメールが届くのだが、自分の場合はメール見てないのでこれも開封したことにしている。

function DMMEnglish() {
  var criteria = "from:noreply@eikaiwa.dmm.com レッスン予約";
  eachUnreadMessage(criteria, function (message) {
    var body = message.getBody();
    var [matched, year, month, day, sh, sm] = /様、(\d+)\/(\d\d)\/(\d\d)\s(\d\d):(\d\d)/.exec(body);
    var sdate = new Date(year, month-1, day, sh, sm);
    var edate = new Date(sdate.getTime() + 30 * 60000);
    createEvent("DMM英会話", sdate, edate, "https://eikaiwa.dmm.com/book/book_list/");
  });
  // レッスン前のリマインドメールも開く
  criteria = "from:noreply@eikaiwa.dmm.com レッスンのお知らせ";
  eachUnreadMessage(criteria, function (message) {
    //開くだけ
  });
}

ほかの設定はさきのブログ記事に準じたままなので、このスクリプトだけ直せばOK。