🗓️

Github Issueを一括インポート/エクスポートする方法

に公開

はじめに

Github Issueでプロジェクト管理する難点がいくつあって、
例えばリポジトリのオーナーを変更したいからリポジトリの引っ越しコマンドを使って、
それが失敗するケースが結構あります(私もそう)

引っ越しが失敗したらIssueは全然移行されない、一生懸命作ったのに、、
Githubサイト上で一個ずつ移行するしかなかったから疲れます
一括で解決方法はなんとあります!見つかった方法を紹介したいと思います

オーナー変更の場合はGithub CLIでなんとかにならなかった

Github CLIを使ってIssue移行することは可能です
https://cli.github.com/manual/gh_issue_transfer

Linuxコマンドの知識で工夫すればこんな感じで一気に引っ越せます

gh issue list --json number -q '.[].number' | xargs -I {} gh issue transfer {} [OWNER/REPO]

残念ながら同じオーナーではなかったら怒られます

エラーメッセージ


オーナー違いの場合は使用できません (link)

CSV形式でインポート/エクスポートツールのご紹介

一般的なケースではないので、困っている方がいるでしょう
CSV形式でインポート/エクスポートできるツールがありました

JavascriptでGithubAPIを叩くツールになります
最後に更新されたのが2023年ですが、この記事を書く時(8月2025年)にまだ使えます

https://github.com/gavinr/github-csv-tools

実用例:オーナー別のリポジトリに引っ越し

1)インストール

まずはツールインストール
nodejsが必要なので、まだ持っていなかったらダウンロードしてインストールしましょう
https://nodejs.org/en/

インストール方法はただ下記のコマンドを実行して待つだけです

npm install -g github-csv-tools

エラーが出なかったらバージョンチェックで確認しましょう

githubCsvTools --version

2)アクセストークンの発行

個人用アクセストークンの発行が必要ですので、発行して安全の場所に保存しましょう
https://github.com/settings/personal-access-tokens

権限の設定はこうすれば大丈夫です

  • 【エクスポート】Repositoryタブ > Issuesのread and write
  • 【インポート】Repositoryタブ > Administrationのread and write

https://docs.github.com/ja/rest/authentication/permissions-required-for-fine-grained-personal-access-tokens?apiVersion=2022-11-28

3)エクスポート

ターミナルを開いてリポジトリのルートに移動し、エクスポートコマンドを実行しましょう

githubCsvTools

いろいろ聞かれたら下記を参考してください

Token (get from https://github.com/settings/tokens): <!-- トークンを聞かれたら1)からトークンを使う -->
User or organization: <!-- リポジトリを持っているユーザ名 (例:gavinr) -->
Repository: <!-- リポジトリ名 (例:github-csv-tools) -->

成功したらcsvファイルが出力されます。よし!

成功しました

3a)データの確認・編集

issue内容を編集したい場合はcsvを編集できます
Githubサイトよりexcelなどを使える楽になります

4)インポート

準備したcsvを簡単にアクセスできる場所に置きましょう(引っ越し先リポジトリのルートとか)
エクスポートと同じく、リポジトリのルートに移動してコマンドを実行しましょう

githubCsvTools [インポートしたいcsvファイルのパス]

エクスポートと同様いろいろを聞かれます

Token (get from https://github.com/settings/tokens): <!-- トークンを聞かれたら1)からトークンを使う -->
User or organization: <!-- リポジトリを持っているユーザ名 (例:gavinr) -->
Repository: <!-- リポジトリ名 (例:github-csv-tools) -->


インポートが成功ました

できたらGithub上に確認しましょう

Issueが追加されました

ツールを理解する

このgithubCsvToolsはもう更新されていないので、問題があったら自分で直せる自信を持っている方に紹介したい資料です

issue 用の REST API

https://docs.github.com/ja/rest/issues/issues?apiVersion=2022-11-28

まずはGithub APIの資料、インポートコマンドは直接叩きます
ツールのソースを確認してみれば最新APIを叩いているではないことが理解できます
もしインポートが上手くいかなかったらこの資料を参考して改装して見てください

Github APIの公式SDK

https://github.com/octokit

githubCsvToolsはエクスポートコマンドでoctokitを使っています
あまり運用されていなくても公式SDKなのでなんとなく動けますね

終わりに

Github APIが理解できればもっとGithubを使いこなせる気がします
Javascriptができる方はツールのソースを確認することがおすすめです
この記事が誰かに役を立ちましたら幸いでございます

株式会社BALEEN STUDIO

Discussion