69

如何将我的所有问题从 Enterprise GitHub 存储库导出到 Excel 文件?我试过搜索许多 Stack Overflow 的答案,但没有成功。我也尝试了这个解决方案(将 Git 问题导出到 CSV并收到“ImportError:没有名为请求的模块”错误。是否有任何工具或任何简单的方法可以将所有问题导出到 Excel?

4

12 回答 12

58

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

curl -i https://api.github.com/repos/<repo-owner>/<repo-name>/issues --header "Authorization: token <token>" 

令牌可以在个人访问令牌下生成

检查API 描述以获取所有详细信息。

于 2017-08-30T06:51:42.653 回答
34

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
于 2019-08-13T14:45:02.913 回答
33

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

brew install gh

登录:

gh auth login

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

gh issue list --limit 1000 --state all | tr '\t' ',' > issues.csv

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

于 2020-10-11T01:07:37.160 回答
14

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

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

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

于 2016-12-29T09:48:03.817 回答
7

不幸的是 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 页,则可能需要额外调用。

于 2019-05-01T22:05:26.407 回答
3

我尝试了其他评论中描述的有关以 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 调用/小时的限制。

于 2018-10-10T15:01:31.907 回答
2

您也可以尝试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>

效果很好。

于 2019-12-18T02:44:44.757 回答
2

这是一个为您执行此操作的工具(使用 GitHub API): https ://github.com/gavinr/github-csv-tools

于 2020-04-19T19:32:55.403 回答
1

我已经对此进行了很长一段时间的修改,发现 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 编辑器”
  • 在编辑器中,选择“新查询”、“其他来源”、“空白查询”
  • 现在你点击“高级编辑器”并粘贴上面的查询
  • 单击高级编辑器上的“完成”按钮,然后从工具栏中单击“关闭并加载”
  • 这些问题正在您的电子表格中加载,您正在开展业务
  • 不需要蹩脚的第三方工具
于 2019-11-20T16:06:28.607 回答
0

导出拉取请求可以将问题导出到 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

它有几个用于过滤导出内容的选项。

于 2018-07-26T02:40:07.007 回答
0

作为一项一次性任务,在已安装 GitBash 提示符的 Windows 系统上构建基于 @Chip 的“集线器”推荐...

  1. 下载最新的 hub 可执行文件(如 Windows 64 位) https://github.com/github/hub/releases/并解压(hub.exe 在 .../bin 目录中)。

  2. 创建 github 个人访问令牌https://github.com/settings/tokens并将令牌文本字符串复制到剪贴板。

  3. 创建一个文本文件(例如在记事本中)用作 hub.exe 的输入文件...第一行是您的 github 用户名,在第二行粘贴个人访问令牌,然后是换行符(以便两者输入到集线器时将处理行)。在这里,我假设该文件是存储库基本目录中的 infile.txt。

  4. 运行 Git Bash... 并记住 cd(更改目录)到感兴趣的存储库!然后输入如下一行:

    <path_to_hub_folder>/bin/hub.exe 问题 -s all -f "%U|%t|%S|%cI|%uI|%L%n" <infile.txt > outfile.csv

  5. 然后用'|'打开文件 作为列分隔符。(并考虑删除 github 上的个人访问令牌)。

于 2020-12-01T06:09:15.567 回答
0

可以使用 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 编辑器将显示带有记录的项目列表。

...现在谷歌搜索如何进行相应的转换,以便可以将适当的问题数据显示为单个表格。

于 2020-04-22T19:36:46.177 回答