Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

Qiitaの貢献数を日次で保存する処理をGoogle Apps Scriptで書いてみる

Qiitaの貢献数を日次で保存する処理をGoogle Apps Scriptで書いてみます

スクレイピング用のライブラリ

  • Parser
  • key: M1lugvAXKKtUxn_vdAG9JZleS6DrsjUUV

スクリプトエディタのライブラリから追加します。

サンプル

Qiita の貢献数を日次で取得します。

実際には、このサンプルは役に立ちません。
すでにQiitaが公式に日次の貢献数グラフを表示してくれているためです。

何かの数値を取得して
日次の記録をSpreadsheetに追加しつつ
グラフも自動的に最新化されていきますよ、
というのが伝えたい部分です。

※この記事にかいた処理は動作確認後にすぐスケジュールを削除しました

コード

function qiitaContributes() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var html = UrlFetchApp.fetch("http://qiita.com/tbpgr").getContentText();
  var contributions = Parser.data(html)
                    .from('<span class="userActivityChart_statCount">')
                    .to('</span>')
                    .build()

  var nextRow = _findNextRow(sheet);
  var today = new Date();
  var yyyymmdd = today.getYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate();
  sheet.getRange(nextRow, 1).setValue(yyyymmdd);
  sheet.getRange(nextRow, 2).setValue(contributions);
  return "";
}

function _findNextRow(sheet) {
  var i = 1;
  while (sheet.getRange(i, 1).getValue() != '') {
    Logger.log(i + "-not empty");
    i++;
  }
  return i;
}

グラフの設定をします

直近2日分は手動で入力しました

f:id:tbpg:20161214234522j:plain

スケジューラー

以下の記事で日次実行の設定をします

tbpgr.hatenablog.com

以下のように1日おきにデータが追加され、グラフが更新されます。

動作確認

  • Before

f:id:tbpg:20161214234522j:plain

  • After

時間がきてデータがC1・C2に追加されると、C3の差分とグラフの内容が更新されました。

f:id:tbpg:20161214234532j:plain