Google docsのスプレッドシート上に記載されたURLのいいね数を取得する

Google docsネタ第2弾 エントリ。

仕事でGoogle docsにメモられたURLにつけられたfacebookのいいね数をとりたいなと思ったので、以下の様なスクリプトgoogle docsで作成して解決。

スプレッドシートの「ツールスクリプトエディタ」で空のプロジェクトを使って以下の様なスクリプトを書きます。

function fb(uri) {
  var cache = CacheService.getPublicCache();
  var cacheKey = "fb:like:" + uri;
  var likeNum;
  
  likeNum = cache.get(cacheKey);
  
  if (likeNum == null) {
    var apiUrl = "http://api.facebook.com/method/fql.query?format=json&query=select+total_count+from+link_stat+where+url%3D%22";
    apiUrl += uri;
    apiUrl += "%22";
    
    var responseJson = UrlFetchApp.fetch(apiUrl);
    var items = Utilities.jsonParse(responseJson.getContentText());
    likeNum = items[0].total_count;
    
    if (isFinite(likeNum)) {
      cache.put(cacheKey, likeNum, 60 * 60 * 8);
    }
  }
  
  return likeNum;
}

味噌は使っているのがGoogle docsということで、同じ社内のネットワークから複数の人が同時にスプレッドシートを開いて閲覧することは当然あるわけでそうするとそのたびにfacebookAPIを叩くことになってAPIのレスポンスを得られなくなるので CacheService を使ってキャッシュさせているところですね。

とセルに書いてあげることで、いいね数が返ってくる様になります。

とても便利なのでぜひお試しを。