Moz - SEOとインバウンドマーケティングの実践情報

URLごとのソーシャルメディア反応をGoogleドキュメントで自動的にゲットする方法(後編)

GoogleドキュメントからAPIを呼び出してデータを収集する方法

この記事は前後編の2回に分けてお届けしている。ソーシャルメディアの追跡に役立つサードパーティ製のツールを紹介した前回に引き続き、後編となる今回は、GoogleドキュメントからAPIを呼び出してデータを収集する方法を見てみよう。

先に前編を読む

ソーシャルメディアAPIのいろは

この記事の基本姿勢は、データを収集するためにいくつかの「API」を呼び出す様子を見ていくというものだ。僕が知る限り、大概の一般人は「API」が何かなんて知らないか、この言葉を聞くだけでしり込みしてしまうかのいずれかだ。でも大丈夫。APIなんて、離れた場所にあるリソースから効率的に任意のデータを取り出す手段に過ぎないんだから。

例として、FacebookのGraph APIでSEOmozの情報を調べる場合を見てみよう。この場合、次のURLをブラウザで開くだけでいいんだ。

http://graph.facebook.com/?ids=http://www.seomoz.org

すると、次のようなものが表示される。

ソーシャルメディアAPIのいろは

これが「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ドキュメントでスプレッドシートを開き、スプレッドシートのメニューから[ツール]>[スクリプト エディタ...]を選ぶ。「未保存のスクリプト」として表示された内容を全部消して、あらかじめ用意したFBshares関数のコードを貼り付けて保存すると、スプレッドシート内で「FBshares」関数を利用できるようになる。

もちろん、実際にどうやって自分なりGoogle Apps Scriptを記述するかは、これから説明していく。では一緒に、この動画の中で僕が使っているスクリプトを解読していこう。

Google Apps Scriptを使ってAPIを呼び出す

このプログラミングコードがどんなものか、わかりやすく言うとこんな感じだ。

入力引数が1つのFBsharesという新しい関数を使えるように定義せよ。

この関数が呼び出された場合、与えられたURLに対するFacebook Graph APIのコンテンツを読み出し、戻ってきたデータをJSONとして解析せよ。

そのJSONから「shares」という名前を持つデータをスプレッドシートのセルに入力せよ。

Googleスプレッドシートでこの設定が済んだら、セルに次のように打ち込んでみよう。

=FBshares("http://www.seomoz.org")

すると今新しく定義した関数によって、このURLがFacebookでどれだけ共有されているかが得られる。ここで理解すべき大事な点は、データがJSONであるとコンピュータに1度指示すれば、ドット表記を使って簡単にデータを読めるようになるということだ。では、何が起きているのかを示すために、もう少し複雑なスクリプトに挑戦してみよう。

これは、この間the Oatmealに掲載された漫画についてRedditのAPIを呼び出して得られた結果だ(Redditは英語圏で人気のあるソーシャルリンク共有サービス)。

Google Apps Scriptを使ってAPIを呼び出す

ここに示されているのは、簡単に言うとあるURLについてどれだけの投稿があったかと、それぞれの投稿に関するデータだ。読みやすくするために「data」の内容に関しては省略して表示してある(余談:このオンラインJSON解析プログラムは、JSONの見栄えをよくするにはうってつけだ)。

上記の図では省略して表示した各「data」部分の中味は、実際には次のようになっている。

Google Apps Scriptを使ってAPIを呼び出す

すばらしい。さて、ここで僕らがやりたいのは、JSON内の各「data」フィールドを調べて、その中にある「score」の値を合計するスクリプトを書くことだ。さあお立ち会い! まさにそれを実行するスクリプトがここにある。

Google Apps Scriptを使ってAPIを呼び出す

どうか敬遠しないでほしい。これは本当にすごく単純なんだから。今はこのプログラムコードが理解できなくても、とりあえず無視して、ドット表記を使ってJSON内のデータを参照できることに注目しよう。「object.data.children」は、JSONのデータ全体を指す「object」というオブジェクトの中の「data」という要素の中の「children」という要素を参照している。

自分なりスクリプトを記述するための雰囲気はつかめたんじゃないかと思うけど、もし面倒だと思うなら、僕が書いたスクリプトをコピー&ペーストすればいい。

あるいは、もし筋金入りの不精者なら、下の画像をクリックするだけで、これらすべてのスクリプトがあらかじめ登録されたGoogleドキュメントのスプレッドシートを入手できる(^^) 次の手順だけだ。

  1. まずGoogleアカウントでGoogleドキュメントにログインする。

  2. スクリプトがあらかじめ登録されたGoogleドキュメントのスプレッドシートを開く。

  3. Googleスプレッドシートのメニューから[ファイル]>[コピーを作成]を選ぶ。

そうすれば、カスタマイズして試せる自分用のスプレッドシートを作れる。

Google Apps Scriptを使ってAPIを呼び出す

このスプレッドシートでは、SEOmozブログの最新投稿記事を動的に取り込んでいる(自作の「PostRank」的なものだ)。だけど、自分でコピー&ペーストしたURLの静的なリストにこのスクリプトを実行するだけでもいい。

可能性は無限にある

ここまで読めば、Googleドキュメントのパワーの一端に触れ、独自のソーシャルメディアデータをすばやく簡単に(スプレッドシートのフォーム内に!)取り込めるようになったことだろう。でも、もう少し頑張って、次のようなものを作成することを考えてみよう(画像をクリックすると、前出のスプレッドシートと同様に、コピーを作成して保存できるGoogleスプレッドシートを表示)。

可能性は無限にある

このスプレッドシートにキーワードを入力すると、検索結果のトップ10にランキングされたURLを取り込み、各URLがTwitterとFacebookでどれだけ共有されているか分かるようになっている。こうして、あるキーワードで検索上位に入っているサイトについて、ソーシャルメディアにおける足跡を素早く分析することが可能になるんだ。(英国に住んでいる読者のために、ちょっとしたジオロケーション切り替え機能まで埋め込んだよ!)

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

リードジェネレーション
リードは潜在顧客のことで、ある特定の商品、サービスに関心がありそうなユーザーもし ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]