この記事は DENSOアドベントカレンダー2020 の1日目の記事です。
会社でDocBaseを使っているのですが、投稿が増えてくると良い記事でも見落とされたりするので、月ごとにランキング作ったら面白いんじゃね??と思って作ってみました。
作ったもの
最初はGoで作ろうと思ったのですが、どうしても久しぶりにRubyが書きたくなってRubyで書きました。
使い方
この記事を書いている時点でまだ rubygems にpublishしてないので、git cloneして使ってください。ごめんなさい。
$ git clone https://github.com/suusan2go/docbase-report
$ cd docbase-report/
$ bundle install
環境変数として、DocBaseのアクセストークンとチーム名が必要です。アクセストークンは以下のサイトを参考に入手しましょう。
https://help.docbase.io/posts/45703
チーム名はURLの <team名>.docbase.io
team名です。
$ export DOCBASE_TEAM=<your team name>
$ export DOCBASE_ACCESS_TOKEN=<your token>
$ bundle exec exe/docbase_report docbase_report monthly_report 2020-08-01 #8月の人気記事ランキングを作る場合
これで標準出力に、こんな感じで本文が出てきます。
# 8月のランキング
## グッジョブランキング
### 1位 34グッジョブ 「とっても人気のある記事」
#{123456}
### 2位 21グッジョブ 「ちょっと人気のある記事」
#{6789}
### 3位 21グッジョブ 「まあまあ人気のある記事」
#{101112}
## スターランキング
### 1位 7スター 「とっても人気のある記事」
#{123456}
### 2位 6スター 「ちょっと人気のある記事」
#{6789}
### 3位 6スター 「まあまあ人気のある記事」
#{101112}
## コメントランキング
### 1位 24コメント 「とっても人気のある記事」
#{123456}
### 2位 9コメント 「ちょっと人気のある記事」
#{6789}
### 3位 5コメント 「まあまあ人気のある記事」
#{101112}
これをコピーして投稿したらランキング作成完了です。正直もっと色々自動化したかったんだけど、月1のランキングなら手動で頑張ればいいかと思ってあまり頑張ってないです!プルリクエストは歓迎します!!!
本文をカスタマイズしたい
将来的には引数とかでerbテンプレートのパスを渡せるようにしたいと思っていますが、今の所は以下のパスにおいてあるerbを手元でいじってもらえれば好きなように出力できます。プルリクエストは歓迎です!!!
https://github.com/suusan2go/docbase-report/blob/master/lib/template/monthly_report.md.erb
# <%= target_date.month %>月のランキング
## グッジョブランキング
<% summary.good_jobs_ranking.each_with_index do |post, index| %>
### <%= index + 1 %>位 <%= post["good_jobs_count"] %>グッジョブ 「<%= post["title"] %>」
#{<%= post["id"] %>}
<% end %>
## スターランキング
<% summary.stars_ranking.each_with_index do |post, index| %>
### <%= index + 1 %>位 <%= post["stars_count"] %>スター 「<%= post["title"] %>」
#{<%= post["id"] %>}
<% end %>
## コメントランキング
<% summary.commented_ranking.each_with_index do |post, index| %>
### <%= index + 1 %>位 <%= post["comments"].length %>コメント 「<%= post["title"] %>」
#{<%= post["id"] %>}
<% end %>
まとめ
QiitaにDocBaseに関する記事書くのすごく背徳感があります。