2014年4月7日月曜日

【Google Apps Script】6. ヤフーの検索ランキングを取得する(XML形式)

前回は英語ブログのRSSフィードを取得する練習をしました。今回はもう少しマーケティング活動に近いデータを取り扱ってみようと思います。

ヤフーが検索行動に関するデータをいくつか公開していますが、その中の「総数ランキング 総合(デイリー)」を取り上げたいと思います。これはヤフーで検索されるすべてのキーワードの日々のトップ20をランキングにしたものです。

Yahoo!検索データ 総数ランキング
http://searchranking.yahoo.co.jp/total_ranking/general/

取得方法は前回の英語ブログの取得の際に使ったスクリプトとほぼ同じなのでコピペ・編集で概ねいけますが、今回は一部のXMLデータ取得の際に名前空間を指定する必要があるので、少々難易度が上がっています。それ以外は同じです。

前回同様、関数は3つです。
onOpen(e)で独自メニューを追加します。
parseXml()で、XMLデータを取得、パースし、スプレッドシートにデータを展開します。
sendemail()で、展開したデータを、指定したメールアドレスに送信します。

【サンプルコード】
サンプルコードはこちらです。前述の通り、一部のXMLデータでrankingという名前空間を指定しているので、それを処理しないといけません。
var ranking = XmlService.getNamespace('ranking', 'http://searchranking.yahoo.co.jp/ns/ranking');
というコードを加えました。getChildメソッドで指定した属性データを取得する際に、オプションで名前空間名を指定すれば取得できるようになります。

このフィードでは親切に、前回順位と変動(トレンド)もデータで提供してくれているので、前回と最新の比較処理などが必要ありません。そのまま使うことにします。ただ、トレンドに関してはデータ上は"stay","new","down","up",と英語なので、一旦E列に展開し、スプレッドシート上のsubstitute関数を使ってD列に、"変化なし","新登場","下降","上昇"として変換して展開する処理を加えています。コードでこのあたりもやったほうがキレイだという意見もあるでしょうが、ここはスプレッドシートを併用するメリットを解説するためにもこうしました。

また、これもスプレッドシート上の機能を使って、条件付き書式で、"新登場"の場合はグリーン、"下降"の場合はレッド、"上昇"の場合はブルーにテキストカラーを変化させるようにしました。

メール送信機能は今回も加えました。私はこのデータは毎朝8:00に受信するようにトリガーを設定しています。上位5位までのキーワードはさほど変動はないですが、それ以下は新しいキーワードが入ってきやすいので、トレンドが把握できます。

また、今回もスプレッドシートのメニューに関数を加えているので必要な時にスプレッドシートの結果を更新したり、メールすることもできるようになっています。
ちなみにヤフーからRSSで提供されている検索データはいくつか種類があるので、好きなものを取り込んでみるのもいいと思います。
http://searchranking.yahoo.co.jp/rss/

以上です。RSSの取得については、もう何度かやっていきます。

0 件のコメント:

コメントを投稿