如何将GitHub问题导出到Excel?

时间:2016-12-28 20:36:47

标签: excel github github-api github-enterprise

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

12 个答案:

答案 0 :(得分:27)

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

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

用户有权访问私人仓库。然后,您可以使用任何合适的转换器将生成的json转换为csv,如其他答案所示。

查找身份验证参考here

答案 1 :(得分:9)

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

只需在浏览器中打开以下网址,将{owner}{repo}替换为实际值:

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

答案 2 :(得分:6)

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

brew install gh

登录:

gh auth login

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

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

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

答案 3 :(得分:5)

用于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

答案 4 :(得分:2)

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

答案 5 :(得分:1)

我尝试了其他注释中介绍的有关以JSON格式导出问题的方法。一切正常,但格式搞砸了。然后我在Excel帮助中发现它可以直接访问API,并将JSON响应中的数据整齐地加载到我的Excel工作表中。

我用来查找所需帮助的Google术语是“ excel power query web.content GET json”。我找到了如何制作Excel视频,该视频大有帮助。

在Excel查询中有效的网址(与其他帖子相同):

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

我个人还添加了&state = open参数,否则我需要请求数百个页面。有一次我达到了GitHub的IP地址每小时未经身份验证的API调用的限制。

答案 6 :(得分:0)

Export Pull Requests可以将问题导出到CSV文件,可以使用Excel打开。它还支持GitLab和Bitbucket。

从其文档中:

  

在sshaw / git-link和   sshaw / itunes_store_transporter:

     

epr sshaw / git-link sshaw / itunes_store_transporter> pr.csv

     

导出未由sshaw在padrino / padrino-framework中创建的拉出请求:

     

epr -x pr -c'!sshaw'padrino / padrino-framework> pr.csv

它有几个选项可以过滤导出的内容。

答案 7 :(得分:0)

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

同时,如果您具有jq和curl,则可以使用以下示例在两行中执行此操作,该示例输出发行号,标题和标签(标签),并且还可以用于私人存储库(如果您不这样做)不想按标签过滤,只需删除网址的labels={label}&部分)。您需要替换所有者,存储库,标签和用户名:

echo "number, title,tags" > 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

请注意,如果您的数据超过一页,则可能需要额外的呼叫

答案 8 :(得分:0)

我对此进行了一段时间的修改,发现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中填写您自己的组织名称和回购名称,并获得auth令牌。我已经使用Chrome REST插件测试了URL,并从那里输入了用户和api密钥得到了令牌。如果您不想处理令牌,则可以使用用户和密钥从Excel中进行显式身份验证。我只是发现在查询设置中使用匿名路由而提供易于格式化的请求标头更为简单。

此外,这适用于多达100个未解决问题的回购。如果您还有更多内容,则需要重复查询(第2页等)并合并结果。

使用此查询的步骤:

  • 在新工作表的“数据”标签上,打开“获取数据”下拉列表
  • 选择“启动Power Query编辑器”
  • 在编辑器中,选择“新建查询”,“其他来源”,“空白查询”
  • 现在您单击“高级编辑器”并粘贴上面的查询
  • 点击高级编辑器上的“完成”按钮,然后从工具栏中点击“关闭并加载”
  • 问题正在您的电子表格中加载,并且您在经商中
  • 不需要糟糕的第三方工具

答案 9 :(得分:0)

您也可以尝试https://github.com/remoteorigin/git-issues-downloader,但请确保使用develop分支。 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>

效果很好。

答案 10 :(得分: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编辑器将显示带有记录项的列表。

...现在Google围绕着如何进行相应的转换,以便可以将适当的问题数据显示为单个表格。

答案 11 :(得分:0)

作为一项一次性任务,请在已安装GitBash提示符的Windows系统上,基于@Chip的基于'hub'的建议...

  1. 下载最新的中心可执行文件(例如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(更改目录)到感兴趣的存储库!然后输入如下一行:

    /bin/hub.exe问题-s all -f“%U |%t |%S |%cI |%uI |%L%n” outfile.csv

  5. 然后使用“ |”打开文件作为列定界符。 (并考虑删除github上的个人访问令牌)。