source

GitHub 문제를 Excel로 내보내려면 어떻게 해야 하나요?

gigabyte 2023. 4. 9. 21:33
반응형

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

문서 첨부 Gist

이 문제를 오랫동안 고민해 본 결과, 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 출력을 필터링합니다.

TSVdumpdump.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 시스템에서 다음을 수행합니다.

  1. 최신 허브 실행 파일(Windows 64비트 등) https://github.com/github/hub/releases/을 다운로드하여 압축을 풉니다(exce.exe는 .../bin 디렉토리에 있습니다).

  2. github 퍼스널액세스 토큰 https://github.com/settings/tokens을 생성하여 토큰텍스트 문자열을 클립보드에 복사합니다.

  3. hub.exe에 대한 입력 파일로 사용할 텍스트 파일(메모장 등)을 만듭니다.첫 번째 행은 github 사용자 이름입니다.두 번째 행은 퍼스널액세스 토큰을 붙여넣고 그 뒤에 새로운 행이 붙습니다(허브에 입력했을 때 양쪽 행이 처리됩니다).여기서 나는 파일이 파일이라고 추측한다.txt를 저장소의 기본 디렉토리에 저장합니다.

  4. Git Bash 실행...cd(디렉토리 변경)를 대상 저장소로 보내는 것을 잊지 마십시오.그런 다음 다음과 같은 행을 입력합니다.

    <path_to_hub_folder>/bin/hub.exe 문제 -s all -f %U|%t|%S|%cI | %uI | %L%n" < 파일.txt > outfile.csv

  5. 그런 다음 열 구분 기호로 '|'가 있는 파일을 엽니다.(또한 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

반응형