URLごとのソーシャルメディア反応をGoogleドキュメントで自動的にゲットする方法(後編)
この記事は前後編の2回に分けてお届けしている。ソーシャルメディアの追跡に役立つサードパーティ製のツールを紹介した前回に引き続き、後編となる今回は、GoogleドキュメントからAPIを呼び出してデータを収集する方法を見てみよう。
ソーシャルメディアAPIのいろは
この記事の基本姿勢は、データを収集するためにいくつかの「API」を呼び出す様子を見ていくというものだ。僕が知る限り、大概の一般人は「API」が何かなんて知らないか、この言葉を聞くだけでしり込みしてしまうかのいずれかだ。でも大丈夫。APIなんて、離れた場所にあるリソースから効率的に任意のデータを取り出す手段に過ぎないんだから。
例として、FacebookのGraph APIでSEOmozの情報を調べる場合を見てみよう。この場合、次のURLをブラウザで開くだけでいいんだ。
→ http://graph.facebook.com/?ids=http://www.seomoz.org
すると、次のようなものが表示される。
これが「APIを呼び出す」ということだ。どうだい、簡単だろう。まず、波括弧({ })があちこちにあるのが目につく。だが、極端に技術嫌いな人でも、データが何を言っているのかはたぶん分かると思う。実は、これはJSONというもので、ありがたいことにマシンはJSONを喜んで読んでくれる。
僕はHacker Newsにあるスレッドのおかげで、このAPIと同様に、サイトのソーシャルプレセンスに関する情報を得られる無料APIをたくさん見つけることができた。
- Facebook
http://graph.facebook.com/?ids=http://www.seomoz.org
- Twitter
http://urls.api.twitter.com/1/urls/count.json?url=http://www.seomoz.org
- Linkedin
http://www.linkedin.com/cws/share-count?url=http://www.seomoz.org
- Stumbleupon
http://www.stumbleupon.com/services/1.01/badge.getinfo?url=http://www.seomoz.org
- Delicious
http://feeds.delicious.com/v2/json/urlinfo/data?url=http://www.seomoz.org
- Google Buzz
https://www.googleapis.com/buzz/v1/activities/count?alt=json&url=http://www.seomoz.org
- Reddit
http://www.reddit.com/api/info.json?url=http://www.seomoz.org
このようなAPIを使うのは、各HTMLページからデータをスクレイピングするよりもはるかに優れた方法だ。この方法なら僕らのリクエストは各サーバーに最小限の負荷しかかけないが、すべてのリクエストを行うと、JavaScriptやら画像やら一切合切を読み込むことになってしまう。
Google Apps Scriptを使ってAPIを呼び出す
Google Apps Scriptを理解するのはとても簡単だ。エクセルのマクロを使ったことがある人なら、すぐに分かるだろう。それでもあまり自信がない人のために、Google Apps Scriptの使い方を説明している(1分弱の)とても短い解説を用意しておいた。
もちろん、実際にどうやって自分なりGoogle Apps Scriptを記述するかは、これから説明していく。では一緒に、この動画の中で僕が使っているスクリプトを解読していこう。
このプログラミングコードがどんなものか、わかりやすく言うとこんな感じだ。
入力引数が1つのFBsharesという新しい関数を使えるように定義せよ。
この関数が呼び出された場合、与えられたURLに対するFacebook Graph APIのコンテンツを読み出し、戻ってきたデータをJSONとして解析せよ。
そのJSONから「shares」という名前を持つデータをスプレッドシートのセルに入力せよ。
Googleスプレッドシートでこの設定が済んだら、セルに次のように打ち込んでみよう。
=FBshares("http://www.seomoz.org")
すると今新しく定義した関数によって、このURLがFacebookでどれだけ共有されているかが得られる。ここで理解すべき大事な点は、データがJSONであるとコンピュータに1度指示すれば、ドット表記を使って簡単にデータを読めるようになるということだ。では、何が起きているのかを示すために、もう少し複雑なスクリプトに挑戦してみよう。
これは、この間the Oatmealに掲載された漫画についてRedditのAPIを呼び出して得られた結果だ(Redditは英語圏で人気のあるソーシャルリンク共有サービス)。
ここに示されているのは、簡単に言うとあるURLについてどれだけの投稿があったかと、それぞれの投稿に関するデータだ。読みやすくするために「data」の内容に関しては省略して表示してある(余談:このオンラインJSON解析プログラムは、JSONの見栄えをよくするにはうってつけだ)。
上記の図では省略して表示した各「data」部分の中味は、実際には次のようになっている。
すばらしい。さて、ここで僕らがやりたいのは、JSON内の各「data」フィールドを調べて、その中にある「score」の値を合計するスクリプトを書くことだ。さあお立ち会い! まさにそれを実行するスクリプトがここにある。
どうか敬遠しないでほしい。これは本当にすごく単純なんだから。今はこのプログラムコードが理解できなくても、とりあえず無視して、ドット表記を使ってJSON内のデータを参照できることに注目しよう。「object.data.children」は、JSONのデータ全体を指す「object」というオブジェクトの中の「data」という要素の中の「children」という要素を参照している。
自分なりスクリプトを記述するための雰囲気はつかめたんじゃないかと思うけど、もし面倒だと思うなら、僕が書いたスクリプトをコピー&ペーストすればいい。
あるいは、もし筋金入りの不精者なら、下の画像をクリックするだけで、これらすべてのスクリプトがあらかじめ登録されたGoogleドキュメントのスプレッドシートを入手できる(^^) 次の手順だけだ。
Googleスプレッドシートのメニューから[ファイル]>[コピーを作成]を選ぶ。
そうすれば、カスタマイズして試せる自分用のスプレッドシートを作れる。
このスプレッドシートでは、SEOmozブログの最新投稿記事を動的に取り込んでいる(自作の「PostRank」的なものだ)。だけど、自分でコピー&ペーストしたURLの静的なリストにこのスクリプトを実行するだけでもいい。
可能性は無限にある
ここまで読めば、Googleドキュメントのパワーの一端に触れ、独自のソーシャルメディアデータをすばやく簡単に(スプレッドシートのフォーム内に!)取り込めるようになったことだろう。でも、もう少し頑張って、次のようなものを作成することを考えてみよう(画像をクリックすると、前出のスプレッドシートと同様に、コピーを作成して保存できるGoogleスプレッドシートを表示)。
このスプレッドシートにキーワードを入力すると、検索結果のトップ10にランキングされたURLを取り込み、各URLがTwitterとFacebookでどれだけ共有されているか分かるようになっている。こうして、あるキーワードで検索上位に入っているサイトについて、ソーシャルメディアにおける足跡を素早く分析することが可能になるんだ。(英国に住んでいる読者のために、ちょっとしたジオロケーション切り替え機能まで埋め込んだよ!)
ソーシャルもやってます!