こんにちは、最近ノコギリで自分の指をギコギコした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