2014年4月9日水曜日

【Google Apps Script】7. アマゾンの書籍ベストセラーランキングを取得する(JSON形式)

前々回、前回はXML形式のデータを取得する練習をしましたが、今回はJSON形式のデータを取得する練習をしようと思います。

アマゾンでお買い物をする人は多いと思いますが、アマゾンのショッピングカテゴリの売れ筋ランキングはすべてRSSで提供されていて、最も下の階層まで絞ることも可能です。


例えば【書籍】カテゴリを例にとります。

Amazonランキング - 本のベストセラー
http://www.amazon.co.jp/gp/bestsellers/books/ref=sv_b_3

こちらから好きな階層を選ぶことができます。私のビジネスに関係がある【本 > ビジネス・経済 > マーケティング・セールス】のランキングを毎日更新してメール送信するようなスクリプトを作ろうと思います。

今回ですが、Google Feed APIを使ってRSSをJSON形式で受け取って処理する方法を取ります。実際にやってみると、XMLのままで処理するよりも比較的楽に組むことができたと思います。

前回同様、関数は3つです。
onOpen(e)で独自メニューを追加します。
UrlFetchAppでJSONデータを取得後、今回初めて取り上げるjsonParseでパースし、スプレッドシートにデータを展開します。
sendemail()で、展開したデータを、指定したメールアドレスに送信します。

 【サンプルコード】 サンプルコードはこちらです。シート名は「Amazon」に変更してください。

そもそもGoogle Feed APIは、パブリックなatomやRSSフィードをJavaScriptを使って取得しようとした場合、Same-Origin Policyの制限によってドメインが違うサイトのデータは取得できないという問題を解決し、クライアント側で処理できるようにするための便利な仕組みです。結果の出力をXMLでもJSONでも選択できるので、JSON形式に変換するツール的に使えます。URLはこのようになります。
https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=http://www.amazon.co.jp/gp/rss/bestsellers/books/492064/ref=zg_bs_492064_rsslink&num=10
上記リンクをクリックしてもらうとJSON形式になっているのがわかると思います。印象としてはXMLよりもJSONのほうがデータが軽いし、コードを組む際に属性の階層が深いデータを指定するのはJSONのほうがシンプルでずっとやりやすかったです。

最後の&num=10はオプションで、10件表示するという指定です。

実行すると、スプレッドシートでこのようにデータが展開されます。シンプルに、ランキング付きの書籍タイトルとURLだけの構成になっています。

AmazonアソシエイトのIDを持っていて、用途によってURLに反映させたい場合(データをアフィリエイト利用したいなど)はサンプルのようにsetvalueをする際に&tag='AmazonアソシエイトID'という形で引数を付与するようにします(今回はサンプルなので付けてみました)。

Googleのスプレッドシートのトリガー機能で実行時間を設定してメールを自動送信するようにします。アマゾンのフィードは1日の中でも何度も更新しています。私の場合は朝一でメールを受信するように設定しています。

変化が激しい昨今の広告・マーケティング業界なので、読むべき書籍のアンテナを張るのには便利なツールになっています。よかったら使ってみてください。

0 件のコメント:

コメントを投稿