今回はGmailのやり取りのデータを取得する事を見ていきます。
といっても、いわゆるIMAP機能でバックアップするのではなく、
あくまでデータ分析が目的ですので、利用しやすい形で取得する事を目指します。
具体的にはGoogle Apps Scriptによって取得していきます。
Google Apps Scriptとは、Google製品であるスプレッドシートやドキュメント、Googleドライブ、
Goolgeカレンダー、およびGmailやGoogleマップなどをプログラム経由で制御するための言語となります。
Google Apps Scriptを用いる事で、Gmail上から任意の条件にマッチするメールのうち、
欲しい項目(送信日時や差出人など)を自由に選んでGoogleスプレッドシート上に一覧で記載する、
といったことが可能になります。
それでは具体的な手順をみていきます。
まずはGoogleにログインし、上のバーから「ドライブ」を選択します。
次に、左側の「作成」から「スプレッドシート」を選択します。
すると「無題のスプレッドシート」が立ち上がりますので、
上のバーから「ツール」→「スクリプトエディタ」を選択します。
左側の「スプリクトを作成」から「空のプロジェクトを作成」を選びます。
そうすると立ち上がる画面がGoogle Apps Scriptの編集画面となります。
ここから任意のコードを書いていきます。
Google Apps Scriptの詳細は他のサイトに譲るとし、
たとえば、メールを最新の物から30個えらび、タイトルと送信者、受信日時を一覧とする場合は
下記のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
function getMail(){ var sheet = SpreadsheetApp.getActiveSheet(); var threads = GmailApp.getInboxThreads(0,30); var row = 1; for (var n in threads){ var thd = threads[n]; var msgs = thd.getMessages(); for(m in msgs){ var msg = msgs[m]; var from = msg.getFrom(); var date = msg.getDate(); var title = msg.getSubject(); sheet.getRange(row,1).setValue(date); sheet.getRange(row,2).setValue(from); sheet.getRange(row,3).setValue(title); row++; } Utilities.sleep(1000); } } |
実行結果は下記のように「日付」「差出人」「メールタイトル」が並びます。(クリックで拡大)
※処理を実行するには「承認が必要です」と表示されますので「承認する」をクリックしましょう。
※ちなみに、短時間に頻繁にgmailにアクセスするとアラートが出て処理が中断されます。
一度に取得するメールの数は限定し(50〜100程度?)、処理にスリープを入れるようにしたほうがよいようです。
※gmail以外も同様のアラートが出るかもしれません。
Google Apps Scriptはチャット履歴も取得できますので、
バックアップ目的で取得してもよいでしょうし、
たとえば、日時ごとにやりとりの相手とやり取り回数を取得する、
ということも可能です。
※ただし、Googleチャット(GTalk)のフォーマットが2013年4月前後から
変更となっていることに注意しましょう。
もし上記のようにやりとりの回数を取得する場合、
2013年3月以前のチャットログから判断する場合はbrタグやspanタグの回数などから、
計算することが必要です。
以上、Gmail(およびGtalk)のデータを取得する方法を見てきました。
この方法を用いる事で、下記のようにGtalkのやりとり回数およびメッセージ頻度(1回あたりの総メッセージ行数)の
時系列推移などをアニメーションすることが可能です。