2015/09/13

楽天メールdeポイントのURLを抽出しスプレッドシートに自動で出力する方法

このエントリーをはてなブックマークに追加
学生のころは、時間はたっぷりあるけどお金がないということで、楽天(インフォシーク)の「メールdeポイント」のURLをクリックして小銭を稼いでいた。
しかし、社会人になって「労力 >>>>>> 対価」だと気づき、ずいぶんと放置していた。

Infoseek メールdeポイント とは
1通ごとに必ずポイント&ポイナビ補助券がついてくるお得なメールサービスです。
【楽天PointClub】Infoseek メールdeポイントでポイントが貯まる


でも、ある程度自動化できたら便利じゃない?


ということで、Gmailに届いた「メールdeポイント」から対象URLを抽出し、Googleスプレッドシートに自動で出力するスクリプトをつくってみた。




注意事項


利用規約の禁止事項について

第7条 1.(2)自動化プログラム等を用いて、ポイントまたは景品等を取得すること

【メールdeポイント】規約 - Infoseek ポイナビ

メールdeポイントの利用規約に上記がある。
対象URL抽出だけならギリギリ違反しないという勝手な判断でスクリプトをつくっている。
(自動でURLにアクセスするのも簡単だけど、それは完全にアウト!)

そのため、当記事のスクリプトを使って、いかなるトラブルや損害などが生じても一切責任を負いません。自己責任でお願いします。



メールの仕分け


Gmailのフィルタ機能を使って、「メールdeポイント」のメールに分かりやすいラベルをつける。
私の場合は、[pm-info@mail.rakuten.com]から受信したモノに『2楽天Point』というラベルをつけている。



Googleスプレッドシートをつくる


Googleスプレッドシートから、新規スプレッドシートを作成する。


スプレッドシートの[ツール]→[スクリプトエディタ]をクリック。

[空のプロジェクト]を作成する。



Google App Script をかく


function getGmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var start = 0;
  var max = 500;
  var threads = GmailApp.search('label:2楽天Point newer_than:1d', start, max);
  var row = sheet.getLastRow() + 1;
  
  for (var n in threads) {
    var the = threads[n];
    var msgs = the.getMessages();
    for (var m in msgs) {
      var msg = msgs[m];
      var body = msg.getBody()
          .match(/http(s)?:\/\/pmrd\.rakuten\.co\.jp\/[\w?=%&;]+/)[0]
          .replace(/amp;/g, '');
      sheet.getRange(row, 1).setValue(body);
      the.markRead();
      row++;
    }
    Utilities.sleep(500);
  }
}

5行目:Gmailでつけたラベル名を指定。newer_than:1d は今日受信したメールに限定する。
Google App Scriptは起動から6分ほど経つと「起動時間の最大値を超えました」というエラーがでてしまう。回避する方法もあるにはあるが、複雑になるのでこまめに受信したほうが良い。


13~15行目:メールの中から対象URLを正規表現で取得。

対象URLは「http://pmrd.rakuten.co.jp/」から始まる。
後ろの [\w?=%&;]+ はURLのクエリをヒットさせるためのもの。
「a-z, A-Z, 0-9, _, ?, =, %, &, ;」が1回以上繰り返されているという意味。

クエリ部分が & となってしまうため、replaceで無効化している。



自動実行させるための設定


今回の場合は、毎日1回だけ実行させたい。
「現在のプロジェクトのトリガー」を使って、スクリプトが実行されるタイミングを設定する。
ということで、「時間主導型」で「午前0時~1時」に実行するように設定した。



Gmailとスプレッドシートを使うため、アプリの認証が必要になるので許可する。



実行してみる


こんな感じにスプレッドシートに対象URLがズラーっと表示される。
あとはひとつずつクリックしていけばOK!(たぶん)



参考サイト


Google App Scriptのほとんどを参考にさせていただきました。


以上

written by @bc_rikko

0 件のコメント :

コメントを投稿

ツイート