如何将我的所有问题从 Enterprise GitHub 存储库导出到 Excel 文件?我试过搜索许多 Stack Overflow 的答案,但没有成功。我也尝试了这个解决方案(将 Git 问题导出到 CSV并收到“ImportError:没有名为请求的模块”错误。是否有任何工具或任何简单的方法可以将所有问题导出到 Excel?
12 回答
github的hub命令行包装器使这变得非常简单。
你可以这样做:
$ hub issue -f "%t,%l%n" > list.csv
这给了你这样的东西
$ more issue.csv
Issue 1 title, tag1 tag2
Issue 2 title, tag3 tag2
Issue 3 title, tag1
使用官方GitHub CLI,您可以轻松地将所有问题导出为 CSV 格式。
brew install gh
登录:
gh auth login
将目录更改为存储库并运行以下命令:
gh issue list --limit 1000 --state all | tr '\t' ',' > issues.csv
在欧洲 .csv 文件中,分隔符是分号';'
,而不是逗号。根据需要修改分隔符。
如果这是一次性任务,您可以使用GitHub WebAPI。它允许以 JSON 格式导出问题。然后您可以将其转换为 Excel(例如使用一些在线转换器)。
只需在浏览器中打开以下 URL,用实际值替换{owner}
and :{repo}
https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100
不幸的是 github.com 并没有让这变得更容易。
同时,如果您有 jq 和 curl,您可以使用类似以下示例的内容在两行中执行此操作,该示例输出问题编号、标题和标签(标签)并且也适用于私人回购(如果您不想要按标签过滤,只需删除labels={label}&
部分网址)。您需要替换 $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
请注意,如果您的数据超过 1 页,则可能需要额外调用。
我尝试了其他评论中描述的有关以 JSON 格式导出问题的方法。它工作正常,但格式不知何故搞砸了。然后我在 Excel 帮助中发现它能够直接访问 API 并将 JSON 响应中的数据整齐地加载到我的 Excel 工作表中。
我用来查找所需帮助的 Google 术语是“excel power query web.content GET json”。我找到了一个 How To Excel 视频,这对我很有帮助。
在 Excel 查询中有效的 URL(与其他帖子相同):
https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100
我个人也是加了参数&state=open,不然需要请求上百页。有一次,我的 IP 地址达到了 GitHub 对未经身份验证的 API 调用/小时的限制。
您也可以尝试https://github.com/remoteorigin/git-issues-downloader但请务必使用开发分支。npm 版本和 master 分支是错误的。
或者你可以使用这个补丁版本
npm install -g https://github.com/mkobar/git-issues-downloader
然后运行(对于公共回购)
git-issues-downloader -n -p none -u none https://github.com/<user>/<repository>
或私人回购:
git-issues-downloader -n -p <password or token> -u <user> https://github.com/<user>/<repository>
效果很好。
这是一个为您执行此操作的工具(使用 GitHub API): https ://github.com/gavinr/github-csv-tools
我已经对此进行了很长一段时间的修改,发现 Power BI 是一种在电子表格中保持数据最新的好方法。我不得不稍微研究一下 Power BI 才能完成这项工作,因为从结构化的 JSON 字段中获取正确的信息,并将列表折叠成串联的字符串,尤其是标签,并不是非常直观。但是这个 Power BI 查询对我来说效果很好,因为它消除了所有噪音并将相关信息转换为易于理解的格式,可以与利益相关者一起查看:
let
MyJsonRecord = Json.Document(Web.Contents("https://api.github.com/repos/<your org>/<your repo>/issues?&per_page=100&page=1&state=open&filter=all", [Headers=[Authorization="Basic <your auth token>", Accept="application/vnd.github.symmetra-preview+json"]])),
MyJsonTable = Table.FromRecords(MyJsonRecord),
#"Column selection" = Table.SelectColumns(MyJsonTable,{"number", "title", "user", "labels", "state", "assignee", "assignees", "comments", "created_at", "updated_at", "closed_at", "body"}),
#"Expanded labels" = Table.ExpandListColumn(#"Column selection", "labels"),
#"Expanded labels1" = Table.ExpandRecordColumn(#"Expanded labels", "labels", {"name"}, {"labels.name"}),
#"Grouped Rows" = Table.Group(#"Expanded labels1", {"number","title", "user", "state", "assignee", "assignees", "comments", "created_at", "updated_at", "closed_at", "body"}, {{"Label", each Text.Combine([labels.name],","), type text}}),
#"Removed Other Columns" = Table.SelectColumns(#"Grouped Rows",{"number", "title", "state", "assignee", "comments", "created_at", "updated_at", "closed_at", "body", "Label"}),
#"Expanded assignee" = Table.ExpandRecordColumn(#"Removed Other Columns", "assignee", {"login"}, {"assignee.login"})
in
#"Expanded assignee"
我在其中添加然后删除了列,并没有清理它 - 在使用它之前随意这样做。显然,您还必须在 URL 中填写您自己的组织名称和 repo 名称,并获取 auth 令牌。我已经使用 Chrome REST 插件测试了 URL,并通过在那里输入用户和 api 密钥获得了令牌。如果您不想处理令牌,可以使用用户和密钥从 Excel 显式验证。我只是发现在查询设置中走匿名路由更简单,而是提供易于格式化的请求标头。
此外,这适用于最多 100 个未解决问题的回购。如果您有更多,您需要复制查询(对于第 2 页等)并组合结果。
使用此查询的步骤:
- 在新工作表中,在“数据”选项卡上,打开“获取数据”下拉菜单
- 选择“启动 Power Query 编辑器”
- 在编辑器中,选择“新查询”、“其他来源”、“空白查询”
- 现在你点击“高级编辑器”并粘贴上面的查询
- 单击高级编辑器上的“完成”按钮,然后从工具栏中单击“关闭并加载”
- 这些问题正在您的电子表格中加载,您正在开展业务
- 不需要蹩脚的第三方工具
导出拉取请求可以将问题导出到 CSV 文件,该文件可以使用 Excel 打开。它还支持 GitLab 和 Bitbucket。
从其文档中:
在 sshaw/git-link 和 sshaw/itunes_store_transporter 中导出打开的 PR 和问题:
epr sshaw/git-link sshaw/itunes_store_transporter > pr.csv
导出不是由 sshaw 在 padrino/padrino-framework 中创建的开放拉取请求:
epr -x pr -c '!sshaw' padrino/padrino-framework > pr.csv
它有几个用于过滤导出内容的选项。
作为一项一次性任务,在已安装 GitBash 提示符的 Windows 系统上构建基于 @Chip 的“集线器”推荐...
下载最新的 hub 可执行文件(如 Windows 64 位) https://github.com/github/hub/releases/并解压(hub.exe 在 .../bin 目录中)。
创建 github 个人访问令牌https://github.com/settings/tokens并将令牌文本字符串复制到剪贴板。
创建一个文本文件(例如在记事本中)用作 hub.exe 的输入文件...第一行是您的 github 用户名,在第二行粘贴个人访问令牌,然后是换行符(以便两者输入到集线器时将处理行)。在这里,我假设该文件是存储库基本目录中的 infile.txt。
运行 Git Bash... 并记住 cd(更改目录)到感兴趣的存储库!然后输入如下一行:
<path_to_hub_folder>/bin/hub.exe 问题 -s all -f "%U|%t|%S|%cI|%uI|%L%n" <infile.txt > outfile.csv
然后用'|'打开文件 作为列分隔符。(并考虑删除 github 上的个人访问令牌)。
可以使用 Power Query 直接在 Excel 中查询 GitHub 的 JSON API。它确实需要一些关于如何将 JSON 转换为 Excel 表格格式的知识,但这在谷歌上是相当容易的。
以下是如何首先获取数据:
在 Excel 的功能区上,单击数据 > 获取数据 > 从 JSON。在对话框中,输入 API URL ... 格式类似于(根据需要添加参数): https ://api.github.com/repos/ {owner}/{repo}/issues
将出现一个标有“访问 Web 内容”的对话框。
在左侧,单击基本选项卡。
在用户名文本框中,输入您的 GitHub 用户名。
在密码文本框中,输入 GitHub 密码/个人访问令牌。
单击连接。
Power Query 编辑器将显示带有记录的项目列表。
...现在谷歌搜索如何进行相应的转换,以便可以将适当的问题数据显示为单个表格。