GitHub issueのリストをコマンドで取得する(Windows)

ググったがまとまった役立つ情報がなかったので自分の経験を記録として残す。

 

コマンドプロンプトからGitHubの公開APIにアクセスして取得する
※一発で全部取得するコマンドは存在しないので注意。

 

jqを使う
jqとは、JSONデータ解析ツール
うまくオプションを指定すると、JSON->CSV変換ができる

①jqをダウンロード
https://stedolan.github.io/jq/

②jq.exeにリネームして、C:\Windows\System32に置く
もしくは別の場所に置いて、その場所を手動でパス設定に追加する

リポジトリがprivate設定の場合はアクセストークンを作る
https://github.com/settings/tokens
※Full control of private repositories権限を持つトークンを作る
トークンがない場合、必ず404が返ってくる
 (404が返ってきたらコマンド構文の再確認の前にリポジトリがprivateになっていないか確認すること)

 

④アクセストークンを指定してcurlで取得
・最大でも1ページ100件単位での取得。
 ページ未指定時は、最新の30件のみを取得するので注意
・何ページまで取得すれば全部取得できるかは事前に確認しておく。
・state=openを指定するとopenのissueのみ allだと全issue

下記のpage=を2にするなどして順次取得する


curl -H "Authorization: token XXXXX" -u ":userName" "https://api.github.com/repos/:userName/:repositoryName/issues?state=open&page=1&per_page=100" | jq -r "[\"number\",\"title\",\"html_url\"], (.[] | [.number,.title,.html_url]) | @csv" > issues_page1.csv

 

※privateリポジトリの場合は都度パスワード入力が必要

 

⑤取得したCSVを開いてコピペして結合する

CSVをダブルクリックしてくエクセルで開くと文字化けするので、、
エクセルのデータ→外部データの取り込み→テキストファイル
CSV(区切り文字カンマ、文字コードUTF8)を指定する