技術のメモ帳

気が向いたときに書いてます

[GAS]Spreadsheetで入力されたURLのFacebookでいいね/シェア件数を出力する関数

SpreadSheetで指定したセルの文字列(URL)の、Facebookでいいね/シェア件数を出力するGoogle Apps Scriptの関数です。

実装する関数

UrlFetchApp.fetch()を用いて、APIにGETリクエストを投げる、シンプルな実装です。

function facebookStats(url, kind) {
  try {
    if (!urlValidator(url)) throw new Error('Invalid args');
    var response = UrlFetchApp.fetch('https://graph.facebook.com/fql?q=SELECT%20like_count,%20total_count,%20share_count,%20click_count,%20comment_count%20FROM%20link_stat%20WHERE%20url%20=%20%22'+url+'%22');
    if (response.getResponseCode() !== 200) throw new Error('Not Found');
    return JSON.parse(response).data[0][kind+'_count'];
  } catch(ex) {
    return ex.toString();
  }
}

function urlValidator(str) {
  var regexp = /^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/;
  return (typeof str == 'string' && regexp.test(str));
}

動作確認

問題なく動作しました。関数の2つ目の引数には、次の返り値のインタフェースを参照のうえ、適宜ご指定してください(_countのsuffixは不要です)。

{
  "data": [
    {
      "share_count": "78867",
      "comment_count": "23145",
      "like_count": "127246",
      "total_count": "229258",
      "click_count": "5"
    }
  ]
}

参考リンク