Как я могу экспортировать все свои задачи из репозитория Enterprise GitHub в файл Excel? Я пытался найти много ответов на переполнение стека, но безуспешно. Я тоже пробовал это решение (экспортировать проблемы Git в CSV и получать "ImportError: No module именованные запросы». Есть ли какой-либо инструмент или простой способ экспортировать все проблемы в Excel?
Как я могу экспортировать задачи GitHub в Excel?
Ответы (12)
Чтобы экспортировать из частного репо с помощью curl, вы можете запустить следующее:
curl -i https://api.github.com/repos/<repo-owner>/<repo-name>/issues --header "Authorization: token <token>"
Токен можно сгенерировать в разделе токены личного доступа.
Все подробности смотрите в описании API.
https://api.github.com/repos/<repo-owner>/<repo-name>/issues?state=all
получит вам все вопросы. Обратите внимание, что запросы на вытягивание также рассматриваются как проблемы, поэтому вы также получите их. Все параметры запроса находятся здесь.
- person mbesso; 13.04.2018
-i
? не было бы лучше, если бы ваш вывод был просто json?
- person mwag; 02.05.2019
curl -i https://api.github.com/repos/<repo-owner>/<repo-name>/issues --header "Authorization: token <token>"
- person tom-james-watson; 04.11.2020
Оболочка командной строки hub для github делает это довольно просто.
Вы можете сделать что-то вроде этого:
$ 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
hub issue -s all -d 2019-08-20 -o updated --include-pulls -f "%U|%t|%S|%cI|%uI|%L%n" > issues.csv
экспортирует все задачи, обновленные с 20 августа 2019 г., включая запросы на вытягивание, и выводит их как | разделенный CSV.
- person Richard J; 28.01.2020
list.csv
при первом запуске hub
, так как он может запрашивать имя пользователя и пароль, что может привести к зависанию.
- person Nick Ager; 14.01.2021
С помощью официального GitHub CLI вы можете легко экспортировать все задачи в формат CSV.
brew install gh
Авторизоваться:
gh auth login
Измените каталог на репозиторий и выполните эту команду:
gh issue list --limit 1000 --state all | tr '\t' ',' > issues.csv
В европейских файлах .csv разделителем является точка с запятой ';'
, а не запятая. Измените разделитель по своему усмотрению.
gh issue list --limit 1000 --state all | tr '\t' ',' > my_issues.csv
- person Rob; 29.10.2020
Если это одноразовая задача, вы можете поиграть с GitHub WebAPI. Это позволяет экспортировать задачи в формате JSON. Затем вы можете преобразовать его в Excel (например, с помощью некоторого онлайн-конвертера).
Просто откройте следующий URL-адрес в браузере, заменив {owner}
и {repo}
реальными значениями:
https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100
К сожалению, 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
Обратите внимание, что если ваши данные превышают 1 страницу, могут потребоваться дополнительные вызовы.
-H "GitHub-OTP: XXXXXX"
- person Adam Reis; 17.01.2020
Я попробовал методы, описанные в других комментариях, относительно экспорта проблем в формате JSON. Он работал нормально, но форматирование было каким-то образом накручено. Затем я обнаружил в справке Excel, что он может напрямую обращаться к API и аккуратно загружать данные из ответа JSON в мои листы Excel.
Термины Google, которые я использовал, чтобы найти необходимую мне помощь, были «excel power query web.content GET json». Я нашел видео How To Excel, которое очень помогло.
URL-адрес, который работал в запросе Excel (такой же, как и в других сообщениях):
https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100
Лично я тоже добавляю параметр &state=open, иначе нужно запрашивать сотни страниц. В какой-то момент я достиг установленного GitHub лимита вызовов API без аутентификации в час для моего IP-адреса.
Вы также можете попробовать https://github.com/remoteorigin/git-issues-downloader но обязательно используйте ветку разработки. Версия npm и основная ветка содержат ошибки.
Или вы можете использовать эту исправленную версию с
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-адресе и получить токен авторизации. Я протестировал URL-адрес с плагином Chrome REST и получил токен от ввода пользователя и ключа API. Вы можете пройти аутентификацию явно из Excel с помощью пользователя и ключа, если не хотите иметь дело с токеном. Я просто считаю, что проще использовать анонимный маршрут в настройке запроса и вместо этого предоставить легко отформатированный заголовок запроса.
Кроме того, это работает для репозиториев, содержащих до 100 открытых выпусков. Если у вас больше, вам нужно продублировать запрос (для страницы 2 и т. д.) и объединить результаты.
Шаги для использования этого запроса:
- на новом листе на вкладке "Данные" откройте раскрывающийся список "Получить данные"
- выберите «Запустить редактор Power Query»
- в редакторе выбираем "Новый запрос", "Другие источники", "Пустой запрос"
- теперь вы нажимаете «Расширенный редактор» и вставляете приведенный выше запрос
- нажмите кнопку «Готово» в расширенном редакторе, затем «Закрыть и загрузить» на панели инструментов.
- проблемы загружаются в вашу таблицу, и вы находитесь в бизнесе
- никакой дрянной сторонний инструмент не нужен
Экспорт запросов на вытягивание может экспортировать задачи в файл CSV, который можно открыть в Excel. . Он также поддерживает GitLab и Bitbucket.
Из его документации:
Экспортируйте открытые PR и задачи в 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
У него есть несколько опций для фильтрации того, что экспортируется.
GitHub JSON API можно запрашивать непосредственно в Excel с помощью Power Query. Это требует некоторых знаний о том, как преобразовать JSON в формат таблицы Excel, но это довольно удобно для Google.
Вот как сначала добраться до данных:
В Excel на ленте щелкните Данные > Получить данные > Из JSON. В диалоговом окне введите URL-адрес API... в формате, подобном (добавьте параметры по своему усмотрению): https://api.github.com/repos/{владелец}/{repo}/issues
Появится диалоговое окно с надписью «Доступ к веб-содержимому».
С левой стороны щелкните вкладку «Основные».
В текстовом поле Имя пользователя введите свое имя пользователя GitHub.
В текстовом поле «Пароль» введите пароль/токен личного доступа GitHub.
Щелкните Подключиться.
Редактор Power Query будет отображаться со списком элементов с надписью «Запись».
... теперь погуглите, как соответствующим образом преобразовать, чтобы соответствующие данные о проблеме можно было отображать в виде одной таблицы.
В качестве разовой задачи, основанной на рекомендации @Chip на основе «концентратора»... в системе Windows с уже установленной подсказкой GitBash:
Загрузите последний исполняемый файл концентратора (например, для 64-разрядной версии Windows) 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 issue -s all -f %U|%t|%S|%cI|%uI|%L%n ‹ infile.txt › outfile.csv
Затем откройте файл с помощью '|' как разделитель столбцов. (и рассмотрите возможность удаления токена личного доступа на github).