GitHub 문제를 Excel로 내보내려면 어떻게 해야 하나요?
Enterprise GitHub 저장소에서 Excel 파일로 모든 문제를 내보내려면 어떻게 해야 합니까?많은 스택 오버플로우를 검색해 보았지만 실패했습니다.저도 이 솔루션을 사용해 보았습니다(Git 문제를 CSV로 내보내고 "ImportError: No module named requests" 오류가 표시됨).모든 문제를 Excel로 내보낼 수 있는 툴이나 쉬운 방법이 있습니까?
컬을 사용하여 개인 리포에서 내보내려면 다음을 수행합니다.
curl -i https://api.github.com/repos/<repo-owner>/<repo-name>/issues --header "Authorization: token <token>"
개인 액세스 토큰에서 토큰을 생성할 수 있습니다.
자세한 내용은 API 설명을 참조하십시오.
공식 GitHub CLI를 사용하면 모든 문제를 CSV 형식으로 쉽게 내보낼 수 있습니다.
brew install gh
로그인:
gh auth login
디렉토리를 저장소로 변경하고 다음 명령을 실행합니다.
gh issue list --limit 1000 --state all | tr '\t' ',' > issues.csv
파일에서 .csv입니다.';'
쉼표입니다.구분 기호를 원하는 대로 수정합니다.
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
일회성 작업이라면 GitHub WebAPI로 플레이 할 수 있습니다.문제를 JSON 형식으로 내보낼 수 있습니다.그런 다음 Excel로 변환할 수 있습니다(예를 들어 일부 온라인 변환기 사용).
'URL을 하면 됩니다.{owner}
★★★★★★★★★★★★★★★★★」{repo}
「 」:
https://api.github.com/repos/{owner}/{repo}/issues?page=1&per_page=100
github.com이 이것을 더 쉽게 만들어 주지 않는 것은 유감입니다.
curl이 있는 는, 라벨(을 출력해,2할 수 라벨로 하고 않은 는, 「」, 「jq」curl」, 「」를 ). 제목 및 라벨(태그)을 출력하고 프라이빗 저장소에서도 기능하는 다음 예시를 사용하여 이 작업을 2행으로 수행할 수 있습니다(라벨로 필터링하지 않을 경우 삭제하기만 하면 됩니다).labels={label}&
일부)를 참조해당됩니다.$owner, $repo, $label 및 $label 。
# 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 시트에 깔끔하게 로드할 수 있는 것을 발견했습니다.
제가 필요한 도움말을 찾기 위해 사용한 구글 용어는 "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 파라미터도 추가합니다.그렇지 않으면 수백 페이지를 요청해야 합니다.한때는 GitHub의 IP 주소 미인증 API 호출 수/시간 제한에 도달했습니다.
할 수 및 GitHub CLI 관련).jq
)
gh issue list --limit 10000 --state all --json number,title,assignees,state,url | jq -r '["number","title","assignees","state","url"], (.[] | [.number, .title, (.assignees | if .|length==0 then "Unassigned" elif .|length>1 then map(.login)|join(",") else .[].login end) , .state, .url]) | @tsv' > issues-$(date '+%Y-%m-%d').tsv
이 문제를 오랫동안 고민해 본 결과, Power BI는 스프레드시트의 데이터를 최신 상태로 유지하는 좋은 방법이라는 것을 알게 되었습니다.구조화된 JSON 필드에서 올바른 정보를 얻고 목록을 연결된 문자열(특히 라벨)로 정리하는 것은 매우 직관적이지 않았기 때문에 Power BI에 대해 좀 더 자세히 알아봐야 했습니다.그러나 이 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 이름을 입력하고 인증 토큰을 취득해야 합니다.Chrome REST 플러그인으로 URL을 테스트하여 사용자 및 API 키를 입력하여 토큰을 획득하였습니다.토큰을 취급하고 싶지 않은 경우 사용자 및 키로 Excel에서 명시적으로 인증할 수 있습니다.쿼리 셋업에서 어나니머스 루트로 이동하여 쉽게 포맷된 요청 헤더를 제공하는 것이 더 간단하다는 것을 알 수 있습니다.
또한 최대 100개의 해결되지 않은 문제가 있는 저장소에 대해서도 사용할 수 있습니다.추가 정보가 있는 경우 쿼리를 복제하고(2페이지 등) 결과를 결합해야 합니다.
이 쿼리를 사용하는 단계:
- 새 시트의 "데이터" 탭에서 "데이터 가져오기" 드롭다운을 엽니다.
- "Power Query Editor 부팅"을 선택합니다.
- 편집기에서 "새 쿼리", "기타 소스", "빈 쿼리"를 선택합니다.
- 이제 "Advanced Editor"를 클릭하고 위의 쿼리를 붙여넣습니다.
- Advanced Editor에서 "Done(완료)" 버튼을 클릭한 다음 도구 모음에서 "Close and Load(닫고 로드)"를 클릭합니다.
- 문제가 스프레드시트에 로드되고 있으며, 고객이 업무를 수행하고 있습니다.
- 서드파티제의 툴은 불필요
https://github.com/remoteorigin/git-issues-downloader 에 접속할 수도 있습니다만, 반드시 develope 브랜치를 사용해 주세요.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
gh
CLI는 GitHub CLI를 했습니다.jq
--jq <expression>
GitHub CLI Manual https://cli.github.com/manual/gh_issue_list에서 문서화된 jq 식을 사용하여 JSON 출력을 필터링합니다.
TSV
dumpdump.contracteda를 합니다.
gh issue list --limit 10 --state all --json title,body --jq '["title","body"], (.[] | [.title,.body]) | @tsv' > issues-$(date '+%Y-%m-%d').tsv
CSV
★★★★★000D
는 Unicode로 .tr $'\x{0D}' ' '
.
gh issue list --limit 10 --state all --json title,body --jq '["title","body"], (.[] | [.title,.body]) | @csv' | tr $'\x{0D}' ' ' > issues-$(date '+%Y-%m-%d').csv
Export Pull Requests는 문제를 Excel로 열 수 있는 CSV 파일로 내보낼 수 있습니다.GitLab과 Bitbucket도 지원합니다.
매뉴얼에서 다음 내용을 참조해 주세요.
열려 있는 PR 및 문제를 sshaw/git-link 및 sshaw/itunes_store_transporter로 내보냅니다.
epr sshaw/pr-link sshaw/pr_store_transport > pr.csv
padrino/padrino-framework의 sshaw에 의해 생성되지 않은 열린 풀 요청 내보내기:
epr - x pr - c ' ! padrino / padrino - par > pr.csv
내보낼 항목을 필터링하기 위한 몇 가지 옵션이 있습니다.
Power Query를 사용하여 Excel에서 직접 GitHub의 JSON API를 조회할 수 있습니다.JSON을 Excel 테이블 형식으로 변환하는 방법에 대한 지식이 필요하지만, 그것은 상당히 검색 가능합니다.
먼저 데이터를 입수하는 방법은 다음과 같습니다.
Excel의 리본에서 [Data]> [ Get Data ]> [ From JSON ]을 클릭합니다.대화상자에 API URL ...을 (원하는 대로 파마 추가)와 유사한 형식으로 입력합니다.https://api.github.com/repos/ {owner} / {repo} / parms
"웹 컨텐츠 액세스" 대화상자가 나타납니다.
왼쪽에서 [Basic](기본) 탭을 클릭합니다.
사용자 이름 텍스트 상자에 GitHub 사용자 이름을 입력합니다.
암호 텍스트 상자에 GitHub 암호/개인 액세스 토큰을 입력합니다.
[ Connect ]을 클릭합니다.
Power Query Editor가 Record(기록)라고 하는 항목 목록과 함께 표시됩니다.
...이제 적절한 문제 데이터를 하나의 테이블로 표시할 수 있도록 그에 따른 변환 방법을 구글에서 찾아봅니다.
일회성 작업으로 @Chip의 '허브' 기반 추천을 기반으로 구축...GitBash 프롬프트가 이미 설치된 Windows 시스템에서 다음을 수행합니다.
최신 허브 실행 파일(Windows 64비트 등) https://github.com/github/hub/releases/을 다운로드하여 압축을 풉니다(exce.exe는 .../bin 디렉토리에 있습니다).
github 퍼스널액세스 토큰 https://github.com/settings/tokens을 생성하여 토큰텍스트 문자열을 클립보드에 복사합니다.
hub.exe에 대한 입력 파일로 사용할 텍스트 파일(메모장 등)을 만듭니다.첫 번째 행은 github 사용자 이름입니다.두 번째 행은 퍼스널액세스 토큰을 붙여넣고 그 뒤에 새로운 행이 붙습니다(허브에 입력했을 때 양쪽 행이 처리됩니다).여기서 나는 파일이 파일이라고 추측한다.txt를 저장소의 기본 디렉토리에 저장합니다.
Git Bash 실행...cd(디렉토리 변경)를 대상 저장소로 보내는 것을 잊지 마십시오.그런 다음 다음과 같은 행을 입력합니다.
<path_to_hub_folder>/bin/hub.exe 문제 -s all -f %U|%t|%S|%cI | %uI | %L%n" < 파일.txt > outfile.csv
그런 다음 열 구분 기호로 '|'가 있는 파일을 엽니다.(또한 github의 퍼스널액세스 토큰을 삭제하는 것도 검토해 주세요).
python 패키지 PyGithub을 사용하여 할 수 있습니다.
from github import Github
token = Github('personal token key here')
repo = token.get_repo('repo-owner/repo-name')
issues = repo.get_issues(state='all')
for issue in issues:
print(issue.url)
여기서 URL을 돌려받았습니다.원하시면 '를 변경하여 콘텐츠를 돌려받을 수 있습니다.URL' 부분.그런 다음 문제 링크 또는 콘텐츠를 CSV로 내보냅니다.
언급URL : https://stackoverflow.com/questions/41369365/how-can-i-export-github-issues-to-excel
'source' 카테고리의 다른 글
데이터베이스 스키마를 SQL 파일로 내보내기 (0) | 2023.04.09 |
---|---|
Swift에서 단색으로 UIIMage 작성 (0) | 2023.04.09 |
IBOutlet 및 IBAtion (0) | 2023.04.09 |
도대체 왜 Excel이 같은 이름의 파일 2개를 처리할 수 없는 거죠? (0) | 2023.04.09 |
Swift에서 Unix Epoch Time 가져오기 (0) | 2023.04.09 |