GitHub Issueをエクスポートする方法について

Git
この記事は約6分で読めます。
記事内に広告が含まれています。

GitHub Issuesの各Issueをエクスポートする方法を調べた際の記録です。

GitHub.comから簡単にエクスポート出来るといいんだけど・・・。

今は出来ないみたい。
別の方法を調べてみたよ。

現状はGitHub.com上の操作ではエクスポートできないため、クライアントツールからの操作でエクスポートする必要があります。

GitHub CLIのgh issue listを使う

GitHub CLIを使えば、GitHubのIssue操作なども可能です。

GitHub CLI について - GitHub Docs
GitHub CLI は、すべての作業を 1 か所で行うことができるように、pull request、issues、GitHub Actions、およびその他の GitHub 機能をターミナルに集めたコマンドライン ツールです。

※issue関係だけでなく、pull requestやprojectsなどgithub関連の機能をCLIで操作可能です。

最初にissue関係の使い方です(gh issue –help)。

USAGE
  gh issue list [flags]

ALIASES
  ls

FLAGS
      --app string         Filter by GitHub App author
  -a, --assignee string    Filter by assignee
  -A, --author string      Filter by author
  -q, --jq expression      Filter JSON output using a jq expression
      --json fields        Output JSON with the specified fields
  -l, --label strings      Filter by label
  -L, --limit int          Maximum number of issues to fetch (default 30)
      --mention string     Filter by mention
  -m, --milestone string   Filter by milestone number or title
  -S, --search query       Search issues with query
  -s, --state string       Filter by state: {open|closed|all} (default "open")
  -t, --template string    Format JSON output using a Go template; see "gh help formatting"
  -w, --web                List issues in the web browser

INHERITED FLAGS
      --help                     Show help for command
  -R, --repo [HOST/]OWNER/REPO   Select another repository using the [HOST/]OWNER/REPO format

EXAMPLES
  $ gh issue list --label "bug" --label "help wanted"
  $ gh issue list --author monalisa
  $ gh issue list --assignee "@me"
  $ gh issue list --milestone "The big 1.0"
  $ gh issue list --search "error no:assignee sort:created-asc"

LEARN MORE
  Use `gh <command> <subcommand> --help` for more information about a command.
  Read the manual at https://cli.github.com/manual

Issueを出力するためには、該当リポジトリ内でgh issue listを実行します。

# 準備(ログイン、クローン)
gh auth login
gh repo clone https://github.com/XXXXX.git
cd XXXXX.git

# 基本
gh issue list

# 件数増加&全ステータス
gh issue list --limit 1000 --state all

# 全ステータス&フィールド指定
gh issue list --state all --json 'number,title,body,state,createdAt'

フィールド指定すればコメントも出力されます。
→ しかし、JSONで非正規な形状っぽいので整形はちょっと一工夫が必要です。

github-artifact-exporter

続いて、GUI操作も可能な「github-artifact-exporter」を使う方法です。

Build software better, together
GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over...

※現在はメンテナンスが凍結されているようです。
しかし2024年時点では問題なく利用することが出来ました!

GUIの操作画面です。

起動して次のパラメータを入力することで簡単にCSVやJSON形式などで出力可能です。

  • Token(Personal Access Tokenのこと)
  • Owner(Organizationのこと)
  • Repository

必要に応じてSearch条件を指定可能です。

また、CSV指定時に出力されるフィールドは次の通りです。

  • author.login
  • createdAt
  • number
  • labels
  • state
  • title
  • body
  • updatedAt
  • milestone
  • closedAt
  • assignees.login
  • comments.author.login
  • comments.body
  • comments.createdAt

添付ファイルこそ出力はされないものの、コメントもいい感じで出力され、必要十分な内容に思えます。

※CSVファイルをそのままExcelで開くと文字化けするため、UTF-8のBOM付に変換しましょう!

最後に

本記事ではGitHub Issueのエクスポートについてご紹介しました。

  • github-artifact-exporterは簡単です(しかしメンテナンスは凍結中)
  • github cliでも可能ですが、フィールド処理は手を加えないと扱いにくいかもしれません。
    → その分、柔軟ということなので、作りこめば、添付ファイルもダウンロードできるかもしれません。IssueのREST APIもありますからね。

最後までご覧いただき、ありがとうございました!

コメント

Top
タイトルとURLをコピーしました