Google Apps Script(GAS)で Twitterのフォロー数を取得する方法
最近 Twitter側の内部デザインが変更になったようで、Google Apps Script(GAS) でユーザーの「フォロワー数」を取得できなくなりました。
諸悪の根源は、通常の Twitterの個人ページ (例: https://twitter.com/backy0175 ) を UrlFetchApp.fetchで読み込んで「フォロワー数」を取得している解説サイト/解説ページしかないことだと思います。
実は、以前からユーザーのフォロワー数を JSON形式で取得できるAPIが公開されていますので、このAPIを使えば内部デザインとは関係なしに「フォロワー数」を簡単に取得できますよ。
GASで Twitterのフォロー数を取得するサンプルを作りましたのでよかったらご活用ください。
※ 画面デザインの関係でコードの右側が見切れてますが、すべて選択すると問題なくコピーできます。
参考:
July 28, 2014
"Getting Twitter Follower Count without Using API (Development) — Kaspars Dambis"
https://kaspars.net/blog/twitter-follower-count-without-api
諸悪の根源は、通常の Twitterの個人ページ (例: https://twitter.com/backy0175 ) を UrlFetchApp.fetchで読み込んで「フォロワー数」を取得している解説サイト/解説ページしかないことだと思います。
実は、以前からユーザーのフォロワー数を JSON形式で取得できるAPIが公開されていますので、このAPIを使えば内部デザインとは関係なしに「フォロワー数」を簡単に取得できますよ。
GASで Twitterのフォロー数を取得するサンプルを作りましたのでよかったらご活用ください。
/**
* Twitterから指定されたユーザーのデータを取得します
* @param {string} screenName - 取得したいユーザーの名前(ID)を指定する。
* @return {JSON} - 取得したデータを返す、ユーザーが存在しない場合などエラーになった場合は nullを返す。
*/
function getTwitterNumFollowersJson(screenName) {
var baseURL = "https://cdn.syndication.twimg.com/widgets/followbutton/info.json?screen_names=";
var response = UrlFetchApp.fetch(baseURL + screenName);
var result = null;
if (response.getResponseCode() == 200) {
var text = response.getContentText("utf-8");
if (text != "") {
var data = JSON.parse(text);
if (data.length == 1) {
result = data[0];
}
}
}
return result;
}
/**
* ユーザー名とフォロワー数をログに出力します。
* @param {string} screenName - 取得したいユーザーの名前(ID)を指定する。
*/
function printNumFollowers(screenName) {
var result = getTwitterNumFollowersJson(screenName);
if (result) {
Logger.log(screenName + " : followers = " + result.followers_count);
} else {
Logger.log(screenName + " : Not Found");
}
}
/**
* Twitterから指定されたユーザーのフォロワー数をを取得します
* @param {string} screenName - 取得したいユーザーの名前(ID)を指定する。
* @return {JSON} - 取得したフォロワーを返す、ユーザーが存在しない場合などエラーになった場合は 0を返す。
*/
function getNumFollowers(screenName) {
var result = getTwitterNumFollowersJson(screenName);
if (result) {
return result.followers_count;
} else {
return 0; // Not Found;
}
}
/**
* デバッグ用
*/
function test() {
printNumFollowers("backy0175");
printNumFollowers("xxxxxxxxx");
Logger.log(getNumFollowers("backy0175"));
Logger.log(getNumFollowers("xxxxxxxxx"));
}
※ 画面デザインの関係でコードの右側が見切れてますが、すべて選択すると問題なくコピーできます。
参考:
July 28, 2014
"Getting Twitter Follower Count without Using API (Development) — Kaspars Dambis"
https://kaspars.net/blog/twitter-follower-count-without-api
この記事へのコメント
正攻法では公式のAPIでフォロー数を取得できますよ。
"GET /2/users/by/username/:username | Docs | Twitter Developer Platform"
https://developer.twitter.com/en/docs/twitter-api/users/lookup/api-reference/get-users-by-username-username
A列にTwitterのIDがあったとして、
B列に各IDのフォロワー数だけを表示させるにはどのようにすればよろしいでしょうか。
もしよろしければ教えていただけますと幸いです。