如何将GitHub问题导出到Excel?

mma*_*mar 26 excel github github-api github-enterprise

如何将我的所有问题从Enterprise GitHub存储库导出到Excel文件?我尝试过搜索许多Stack Overflow答案,但没有成功.我也试过这个解决方案(将Git问题导出到CSV并获得"ImportError:No module named requests"错误.是否有任何工具或任何简单的方法将所有问题导出到Excel?

小智 36

要使用curl从私有仓库导出,您可以运行以下命令:

curl -i "https://api.github.com/repos/<repo-owner>/<repo-name>/issues" -u "<user-name>"

用户可以访问私人仓库的地方.然后,您可以使用任何合适的转换器将生成的json转换为csv,如其他答案中所建议的那样.

查找认证参考这里.

  • `https://api.github.com/repos/<repo-owner>/<repo-name>/issues?state=all`将为您解决所有问题.请注意,拉取请求也被视为问题,因此您也可以获得这些请求.所有查询参数均为[此处](https://developer.github.com/v3/issues/#list-issues-for-a-repository). (5认同)
  • 为什么是“-i”标志?如果没有这样你的输出只是 json 不是更好吗? (2认同)
  • 如果您有双因素身份验证设置,对于如何执行此操作有任何问题吗? (2认同)
  • 如前所述,此功能已被弃用,并且如果您启用了 2FA,则该功能不起作用。正确的方法是在 https://github.com/settings/tokens 创建个人访问令牌,然后将该值作为标头传递:`curl -i https://api.github.com/repos/ &lt;repo-owner&gt;/&lt;repo-name&gt;/issues --header "授权:令牌 &lt;token&gt;"` (2认同)

chi*_*hip 29

github的集线器命令行包装器使这变得非常简单。

你可以这样做:

$ hub issue -f "%t,%l%n" > list.csv
Run Code Online (Sandbox Code Playgroud)

这给了你这样的东西

$ more issue.csv

Issue 1 title, tag1 tag2
Issue 2 title, tag3 tag2
Issue 3 title, tag1
Run Code Online (Sandbox Code Playgroud)

  • 这绝对是我从这些答案中尝试过的最好的方法。为了给您展示它的强大功能,以下命令 `hub issues -s all -d 2019-08-20 -o Updated --include-pulls -f "%U|%t|%S|%cI| %uI|%L%n" &gt; issues.csv` 导出了自 2019-08-20 以来更新的所有问题,包括拉取请求,并将它们输出为“|” 分开的 csv。 (7认同)
  • 同意这是一个很棒的方法。我最初不清楚的是:1)在包含感兴趣的克隆存储库的文件夹中运行命令。2) 第一次运行“hub”时不要重定向到“list.csv”,因为它可能会要求输入用户名和密码,因此会出现挂起的情况。 (3认同)
  • 如果您想要获取每个问题的所有评论并保留格式,而不是 CSV,请执行以下操作: `hub issues -s all -f "%I%n" | xargs -I % sh -c '集线器问题显示 % | dos2unix &gt; %.md'`。这会为每个问题生成一个 Markdown 文件。dos2unix 清除导出中的换行符。 (2认同)

hlo*_*and 19

使用官方GitHub CLI,您可以轻松地将所有问题导出为 CSV 格式。

brew install gh
Run Code Online (Sandbox Code Playgroud)

登录:

gh auth login
Run Code Online (Sandbox Code Playgroud)

将目录更改为存储库并运行以下命令:

gh issue list --limit 1000 --state all | tr '\t' ',' > issues.csv
Run Code Online (Sandbox Code Playgroud)

在欧洲 .csv 文件中,分隔符是分号';',而不是逗号。根据需要修改分隔符。

  • 这对我很有帮助,尽管默认的 csv 使用逗号分隔符,并且显示将输出发送到文件 `gh issues list --limit 1000 --state all | 的用法很有用。tr '\t' ',' &gt; my_issues.csv` (2认同)
  • 谢了。不错!注意:对于我来说,为了在 MacOS 上的 Excel 上正确打开 CSV,我将“,”替换为“;” 在脚本行上。 (2认同)
  • 谢谢。‘gh’改变了我的生活。```MAX_NUM=`gh 问题列表 --limit 1 --json 数量 | jq ".[].number"`; 对于“seq 1 $MAX_NUM”中的 n;做 gh 问题视图 $n --json 受让人,作者,正文,关闭,closeAt,评论,createdAt,id,标签,里程碑,数字,projectCards,reactionGroups,状态,标题,updatedAt,url &gt;&gt; github-dump.json; 完成``` (2认同)

Ser*_*pin 9

如果这是一次性任务,您可以使用GitHub WebAPI.它允许以JSON格式导出问题.然后你可以将它转换为Excel(例如使用一些在线转换器).

只需在浏览器中打开以下URL,{owner}{repo}使用实际值替换:

https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100

  • 试试这个,它只适用于公共存储库(为私有存储库提供"未找到"错误).它也不包括评论,但它确实告诉你有多少评论. (7认同)

mwa*_*wag 8

不幸的是 github.com 并没有让这变得更容易。

同时,如果您有 jq 和 curl,您可以使用类似于以下示例的两行代码来完成此操作,该示例输出问题编号、标题和标签(标签),并且也适用于私人存储库(如果您不希望要按标签过滤,只需删除labels={label}&url 的部分)。您需要替换 $owner、$repo、$label 和 $username:

# with personal access token = $PAT
echo "number, title, labels" > issues.csv
curl "https://api.github.com/repos/$owner/$repo/issues?labels=$label&page=1&per_page=100" -u "$username:$PAT" \
| jq -r '.[] | [.number, .title, (.labels|map(.name)|join("/"))]|@csv' >> issues.csv

# without PAT (will be prompted for password)
echo "number, title, labels" > issues.csv
curl "https://api.github.com/repos/$owner/$repo/issues?labels=$label&page=1&per_page=100" -u "$username" \
| jq -r '.[] | [.number, .title, (.labels|map(.name)|join("/"))]|@csv' >> issues.csv
Run Code Online (Sandbox Code Playgroud)

请注意,如果您的数据超过 1 页,可能需要额外调用。