Github APIを使ってissueを取得する

こんにちは、最近ノコギリで自分の指をギコギコしたHaraShoです。
(皆さま、刃物の取り扱いには十分お気をつけ下さい。。)

最近、プロジェクト管理ツールとして導入されたAsanaにGithubのissueを移そうと思い、Github APIを使ったときの内容です。

Asanaには CSV インポート機能 があるので、issueをcsvで取得する方法はないかと調べていたところ、以下を発見しました。

curl -u ":username" "https://api.github.com/repos/:owner/:repos/issues?state=open" | jq -r '["number","title","html_url"], (.[] | [.number,.title,.html_url]) | @csv' > issues.csv

上記コマンドの:username, :owner, :reposを適宜変更して実行してみたところ、以下の結果に。

Enter host password for user 'Githubのユーザー名':
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   124  100   124    0     0    441      0 --:--:-- --:--:-- --:--:--   459
jq: error (at <stdin>:4): Cannot index string with string "number"

jqコマンドに期待する結果が渡せていないようなので、curlだけ実行してみると以下のレスポンスが返ってきていました。

{
  "message": "Not Found",
  "documentation_url": "https://docs.github.com/rest/reference/issues#list-repository-issues"
}

(むむむ、issueが取得できていない。。)

どうもPrivateリポジトリから取得する場合は Personal access tokensで生成したトークンをAuthorization ヘッダに指定する必要があるようでした。 取得できた curl コマンドは以下です。

curl -u ":username" -H "Authorization: token :token" "https://api.github.com/repos/:owner/:repos/issues?state=open"

無事issueを取得することができましたが、デフォルトで取得できる件数は30件のようです。
こちらを参考に任意のパラメータを指定することで、必要なissueを取得することができました。(パチパチ)

今回はここまで、ご覧いただきありがとうございました!

インゲージではエンジニアを募集しています!
ご興味あればぜひご覧くださいませ〜。 ingage.co.jp