読者です 読者をやめる 読者になる 読者になる

技術のメモ帳

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

[GAS]SpreadsheetでTwitter/Facebook/Google等ソーシャルメディアでのシェア状況を出力する関数

donReachという海外のAPIを利用して、Spreadsheetでソーシャルメディアでのシェア状況を出力する関数を作成します。

実装する関数

UrlFetchApp()でリクエストして、JSONをパースして返す、というシンプルな関数です。

function shareCount(url, media) {
  try {
    var response = UrlFetchApp.fetch('https://count.donreach.com/?url='+url);
    if (response.getResponseCode() !== 200) throw new Error('Not Found');
    var stats = JSON.parse(response);
    return stats.shares[media];
  } catch(ex) {
    return ex.toString();
  }
}

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

なお、JSONの返り値は次のようになりますので、関数の第二引数には、お好みのメディアを指定します。

2015年10月1日現在では、buffer, facebook, google, linkedin, pinterest, reddit, twitter, vkに対応しているようです。

{
  "url": "http://example.com/",
  "total": 10711472,
  "shares": {
    "buffer": 843,
    "facebook": 235670,
    "google": 88157,
    "linkedin": 647,
    "pinterest": 10188438,
    "reddit": 146,
    "twitter": 121561,
    "vk": 76010
  }
}

動作確認

問題なく動作しました。

本ブログの、これまでのエントリで、TwitterFacebookを個別に取り扱ってきましたが、このAPIを使うと手軽に様々なメディアからの情報が取得できるので、実装がラクそうです。

ただし、結局は個別APIをまとめて集計しているAPIのため、精度を求める場合は、個別に実装した方が無難かもしれませんね。