How can I export GitHub issues to Excel?

前端 未结 12 1852
逝去的感伤
逝去的感伤 2020-12-07 15:46

How can I export all my issues from an Enterprise GitHub repository to an Excel file? I have tried searching many Stack Overflow answers but did not succeed. I tried this so

12条回答
  •  -上瘾入骨i
    2020-12-07 16:34

    I have tinkered with this for quite some time and found that Power BI is a good way of keeping the data up to date in the spreadsheet. I had to look into Power BI a little to make this work, because getting the right info out of the structured JSON fields, and collapsing lists into concatenated strings, especially for labels, wasn't super intuitive. But this Power BI query works well for me by removing all the noise and getting relevant info into an easily digestible format that can be reviewed with stakeholders:

    let
        MyJsonRecord = Json.Document(Web.Contents("https://api.github.com/repos///issues?&per_page=100&page=1&state=open&filter=all", [Headers=[Authorization="Basic ", 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"
    

    I added and then removed columns in this and did not clean this up - feel free to do that before you use it. Obviously, you also have to fill in your own organization name and repo name into the URL, and obtain the auth token. I have tested the URL with a Chrome REST plugin and got the token from entering the user and api key there. You can authenticate explicitly from Excel with the user and key if you don't want to deal with the token. I just find it simpler to go the anonymous route in the query setup and instead provide the readily formatted request header.

    Also, this works for repos with up to 100 open issues. If you have more, you need to duplicate the query (for page 2 etc) and combine the results.

    Steps for using this query:

    • in a new sheet, on the "Data" tab, open the "Get Data" drop-down
    • select "Launch Power Query Editor"
    • in the editor, choose "New Query", "Other Sources", "Blank query"
    • now you click on "Advanced Editor" and paste the above query
    • click the "Done" button on the Advanced Editor, then "Close and Load" from the tool bar
    • the issues are loading in your spreadsheet and you are in business
    • no crappy third-party tool needed

提交回复
热议问题