2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Twitterのフォロワー数をロギングする

Last updated at Posted at 2020-05-22

#Twitterのフォロワー数をロギングする
ひとつのアカウントのフォロワー数をロギングするのは以下の記事などで紹介されているが、複数のアカウントのTwitterフォロワーをロギングするスクリプトがなかったので書いてみた。
Google Apps Script 講座初級編「GASでTwitterのフォローフォロワー数をスクレイピングする」
##スプレッドシートの構成
A1:Aは日付を入れるセル。
B2:D2はIDを入れるセル。
現在数値が入っている箇所にフォロワー数を取得して入力したい。

スクリーンショット 2020-05-22 12.41.39.png

##スクリプト

function myFunction() {
  //シートを取得
  var sheet = SpreadsheetApp.getActiveSheet();
  
  //RowとColumnの数を取得
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  
  //日付を取得・入力
  var today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd HH:mm:ss');
  sheet.getRange(lastRow+1,1).setValue(today);
  
  //UrlFetchAppのオプションを設定する。
  var options = {
  muteHttpExceptions:true
  };
  
  //各支部のIDからフォロワー数を取得する処理
  for(var i =2; i <= lastColumn; i++){
    var twitterid = sheet.getRange(3,i).getValue();
    console.log(twitterid);
    //URL生成
    var url = 'https://twitter.com/' + twitterid;
    //responseにHTTPリクエストの結果を代入している。
    var response = UrlFetchApp.fetch(url,options);
        var html = response.getContentText('UTF-8');
          var title = html.match(/data-count=(\d.*?)\s/g);
          if(title[2] == undefined||null){
            continue;
            }else{
            var follows = title[1].match(/data-count=(\d.*?)\s/)[1];
            var followers = title[2].match(/data-count=(\d.*?)\s/)[1];
            //フォロワー数を入力
            sheet.getRange(lastRow+1, i).setValue(followers);
            }
          }
   }

###困ったこと
UrlFetchAppで参照するリンク先、つまり、対象のTwitterページがアカウント制限されていたり、アカウント削除されている場合に、エラーが出てしまい、途中で処理が止まってしまっていた。
これを回避するためにif文でundefinedの時は処理を飛ばすようにした。
一応これで動くようになったが、完璧とは言えない。

###今後
GASはjavascriptベースと言うことでjavascriptも追加。
コーディングが汚い、醜いのを改善する。

##追記
自分の支部の年間広報計画にGASで毎週自動でフォロワー数を入力するように設定した。
###コード

function myFunction() {
  //シートを取得
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('年間広報計画');
  
  //RowとColumnの数を取得
  var lastRow = sheet.getLastRow();
  var lastColumn = sheet.getLastColumn();
  
//行先頭列から左方向に取得する
var lastCol2 = sheet.getRange(5, sheet.getMaxColumns()).getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).getColumn();
  
  //UrlFetchAppのオプションを設定する。
  var options = {
  muteHttpExceptions:true
  };
  
  //各支部のIDからフォロワー数を取得する処理
    var twitterid = "study42ku";
    //URL生成
    var url = 'https://twitter.com/' + twitterid
    //responseにHTTPリクエストの結果を代入している。
    var response = UrlFetchApp.fetch(url,options);
        var html = response.getContentText('UTF-8');
          var title = html.match(/data-count=(\d.*?)\s/g);
            var followers = title[2].match(/data-count=(\d.*?)\s/)[1];
            //フォロワー数を入力
            sheet.getRange(5, lastCol2+ 1).setValue(followers);
            }

###気をつけること
スクリプトでは5行目の最大行からCtrl+左キーをしたときと同じ動作をするようにしてある。
スプシ編集で気をつけないとエラーを吐くようになる。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?