GASでDMM英会話の予約メールから自動的にカレンダーに登録

Dec 9, 2016  

この記事は CAMPHOR- Advent Calendar 2016 の “9日目” の記事です.

今年の夏にスピーキングの練習をしたいと思って DMM英会話 をはじめました. 他のオンライン英会話サービスもそうでしたが, DMM英会話サービスはレッスンを予約するとメールが送られてきます. 1 最初は手でカレンダーに登録してたのですが, 毎日プランを始めてしばらくするとめんどくさくてやらなくなり, 案の定予約を忘れたりしました. 予約を忘れず, かつ lazy2 に過ごすために Google Apps Script でDMM英会話予約メールからカレンダーに自動登録するスクリプト を書いたので, 今回はその共有です.

How to work

スクリプトの動作概要はこちらです.

  1. 受信ボックスから 未読 の予約メールを検索
  2. 未読の予約メールの件名・本文から正規表現で日付を抽出しカレンダーに登録
  3. 予約メールを 既読 にする

あとは GAS の機能を使って 1.~3. を定期的に実行します.

既にカレンダーに登録してあるレッスンかどうかを判断するのに メールの未読・既読だけを使っている のが処理を簡単にしているミソですね. 3

スクリプトは Google Drive の CAMPHOR- Advent Calendar 2016 9th day (EnglishSkypeLessons) に置きました. コードを読める方にはスクリプトを読んで頂いて, 記事の残りの部分では GoogleカレンダーとDMM英会話を使っていて僕と同じ悩みを抱えている, そんなあなたに使って頂けるように 使い方 にフォーカスして説明します.

How to use

1. プロジェクトをコピーする

まず CAMPHOR- Advent Calendar 2016 9th day (EnglishSkypeLessons) のリンクを開き, 自分の Google Drive に コピーを作成 します.

Phase1

私の環境では「コピーを作成」を押したら空ページが新しいタブで開かれて成功したかどうか一瞬わかりませんでしたが, 自分の Google Drive を開き直すとちゃんと作成できていました.

また「ファイルを開けません」と表示された方もあとでアプリを指定して開くと表示できると思うので, メニューから自分の Google Drive に「コピーを作成」してください.

2. スクリプトを実行して権限を付与

つぎに 1度手動でスクリプトを実行して Gmail と Google Calendar にアクセスする権限を与えます.

コピーしたプロジェクトを 「Google Apps Script Editor」というアプリを指定して開きます. そして DMMEnglish.gs というファイルを選択して, ナビバーの実行のところから DMMEnglish をクリックして下さい.

Phase2-1

しばらくとすると「承認が必要です」という画面が出てきます.どのような権限が必要なのかを確認するために「許可を確認」をクリックして下さい.

Phase2-2

「許可を確認」を押すとカレンダーとメールにアクセスする権限を求める画面が表示されます. 権限に納得できたら「許可」をクリックして下さい.

Phase2-3

「許可」をクリックするとスクリプトが1回実行されます. 未読の予約メールが受信ボックスにある場合はカレンダーに登録されているはずです!

3. スクリプトを定期的に実行する

あとはこの スクリプトを定期的に実行する ようにするだけです.

ナビバーのリソースのところから「現在のプロジェクトのトリガー」をクリックして下さい.

Phase3-1

まだこのプロジェクトにはトリガーが設定されていないので、下のような画面が出てきます. トリガーの追加をクリックして下さい.

Phase3-2

トリガーの設定画面で DMMEnglish時間主導型, 分タイマー, 15分ごと と選択してから保存をクリックしてください.

Phase3-3

これで 15分ごとにスクリプトが実行されるようになります. あとは未読の予約メールを受信ボックスに入れておけば,勝手に既読にして Google カレンダーに登録されるようになります.

さいごに

日頃の手間を省くスクリプトを書くのは個人的に好きで,今年は他にもこんなのを書きました.

  • Redmine のチケットページから情報をマークダウン形式でクリップボードにコピーするブックマークレット
  • Slack のユーザリストから電話番号を取り出して Twilio で障害電話をかけるための bot
  • Trello でやってる TODO, DOING, DONE のタスク管理リストから API を叩いて週報生成するスクリプト

また機会があれば紹介したいと思います :-D

明日は @kasajei さんによる 「買って大満足!これがマインドフルネス三種の神器だ!」 です. お楽しみに!



  1. そのときに QQEnglish, レアジョブ, BestTeacher などなどの無料プランを一気に試したので同様にスクリプトを書きました.
    [return]
  2. プログラマ三大美徳 怠惰, 短気, 傲慢.
    [return]
  3. この状態管理 は僕が思いついたものではなく、監視メールから Slack に通知する社内スクリプトからアイディアを頂きました :pray: [return]