めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

facebookのイイね数、はてブ数、twitterのツィート数を Google Apps Script で集計して、Google SpreadSheet に入れる

ブログを書いていたりすると、facebookのイイねとか、はてブとか、twitterでのツィート数とか、少し気になります。もしかすると、会社でブログを書いたり、ウェブサービスを運用されている方だと、集計して効果測定を出せ、とか言われたりするんじゃないでしょうか。

そこで、開発担当だと、APIで「イイね」数を取得して、データーベースに保存すればいいんだと思うんですけれど…DBとかに保存するとなると、マーケティング部とか、広報部とかの人にとっては、不便そうだなあ、と。 というわけで、Google Apps Script で集計して、Google SpredSheet に保存すればいいんじゃないかと。

Google Apps Script の設定

「ツール」→「スクリプトエディタ」を選んで、下記のスクリプトを登録します。

スクリーンショット 2013-06-08 15.29.39

Google SpredSheet の実行結果

A列のセルに、URLを入れます。 あとは、function() をセルに設定します。下記のような記載をします

  • =is_count_facebook(A1)
  • =is_count_hatenabookmark(A1)
  • =is_count_tweet(A1)

という感じです。 これで、実行してみると、下記の画面キャプチャーのようになります。 ちなみに、自分のブログだと、あまりにもイイねとか、無いので、id:naoyaさんのエントリーでテスト集計しております

スクリーンショット 2013-06-08 15.02.33

注意点

ところで、このスクリプトの注意点は、

<meta property="fb:app_id" content="xxxxx" />

という設定がしてあると、facebookのイイね数が取得できません。 というのは、graph.facebook.com から返ってくる形式が違うんですよね… FQL を使ってであれば、XML形式で値が取れるようなんですが、パースが面倒じゃないかと(いい方法があるかもしれないんですが)。

ここは、課題じゃないかと思います。

Google Apps Script のスクリプト

/**
 * facebook Like
 *
 */
function is_count_facebook(cell)
{
  var url = cell;

  // facebook Like
  var facebook_response = UrlFetchApp.fetch("http://graph.facebook.com/?id=" + url);
  return JSON.parse(facebook_response)['shares'];
}

/**
 * はてなブックマーク数
 *
 */
function is_count_hatenabookmark(cell)
{
  var url = cell;
 
  var hatena_response = UrlFetchApp.fetch("http://b.hatena.ne.jp/entry/jsonlite/?url=" + url);
  if(hatena_response != 'null')
  {
    return JSON.parse(hatena_response)['count'];
  }else{
    return 0;
  }
 
}

/**
 * tweet数
 *
 */
function is_count_tweet(cell)
{
  var url = cell;

  var twitter_response  = UrlFetchApp.fetch("http://urls.api.twitter.com/1/urls/count.json?url=" + url);
  return JSON.parse(twitter_response)['count'];
}

スクリーンショット 2013-06-08 15.02.53

書籍

Google Apps Scriptクイックリファレンス

Google Apps Scriptクイックリファレンス