GithubのIssuesを一覧出力(Excel参照可能)する | SEの徒然旅ブログ (ujise.com)
こちらの記事を参考にさせていただきました。
Pythonで記述
ー-------------------
import json
import requests
import os
import pandas as pd
def main():
os.environ["no_proxy"] = "localhost"
token = ""
# トークンを設定している場合は以下のtokenをurlの末尾に + toeknで付与する。
# token = "?access_token=生成されたtokentoken"
url = "https://api.github.com/repos/SatoKimihide/IssueTest/issues?state=all"
response = requests.get(url, verify=False)
json_dict = json.loads(response.text)
csv_header = ["No","ステータス","アサイン","ラベル", "title", "内容", "コメント"]
csv_body =
cnt = 1
for issue_items in json_dict:
csv_line_body =
csv_line_body.append(str(cnt))
csv_line_body.append(issue_items["state"])
if len(issue_items["assignees"]) != 0:
assignees_str = ""
for assignees_items in issue_items["assignees"]:
assignees_str = assignees_items["login"] + ":" + assignees_str
csv_line_body.append(assignees_str)
else:
csv_line_body.append("")
# csv_line_body.append(issue_items["labels"])
if len(issue_items["labels"]) != 0:
labels_str = ""
for labels_items in issue_items["labels"]:
labels_str = labels_items["name"] + ":" + labels_str
csv_line_body.append(labels_str)
else:
csv_line_body.append("")
csv_line_body.append(issue_items["title"])
csv_line_body.append(issue_items["body"])
if issue_items["comments"] > 0:
url = issue_items["comments_url"] + token
comments_response = requests.get(url, verify=False)
comments_json = json.loads(comments_response.text)
comment_str = ""
for commnet in comments_json:
comment_str = commnet["updated_at"] + "\n"+ commnet["body"] + "\n\n" + comment_str
csv_line_body.append(comment_str)
else:
csv_line_body.append("")
csv_body.append(csv_line_body)
cnt = cnt + 1
df = pd.DataFrame(csv_body, columns=csv_header)
df.to_csv("output.csv", index=False)
if __name__ == '__main__':
main()
import json
import requests
import os
import pandas as pd
def main():
os.environ["no_proxy"] = "localhost"
token = ""
# トークンを設定している場合は以下のtokenをurlの末尾に + toeknで付与する。
# token = "?access_token=生成されたtokentoken"
#↓のXXXXXXはアカウント名。ZZZZZZはレポジトリ名
url = "https://api.github.com/repos/XXXXXX/ZZZZZZ/issues?state=all"
response = requests.get(url, verify=False)
json_dict = json.loads(response.text)
csv_header = ["No","ステータス","アサイン","ラベル", "title", "内容", "コメント"]
csv_body =
cnt = 1
for issue_items in json_dict:
csv_line_body =
csv_line_body.append(str(cnt))
csv_line_body.append(issue_items["state"])
if len(issue_items["assignees"]) != 0:
assignees_str = ""
for assignees_items in issue_items["assignees"]:
assignees_str = assignees_items["login"] + ":" + assignees_str
csv_line_body.append(assignees_str)
else:
csv_line_body.append("")
# csv_line_body.append(issue_items["labels"])
if len(issue_items["labels"]) != 0:
labels_str = ""
for labels_items in issue_items["labels"]:
labels_str = labels_items["name"] + ":" + labels_str
csv_line_body.append(labels_str)
else:
csv_line_body.append("")
csv_line_body.append(issue_items["title"])
csv_line_body.append(issue_items["body"])
if issue_items["comments"] > 0:
url = issue_items["comments_url"] + token
comments_response = requests.get(url, verify=False)
comments_json = json.loads(comments_response.text)
comment_str = ""
for commnet in comments_json:
comment_str = commnet["updated_at"] + "\n"+ commnet["body"] + "\n\n" + comment_str
csv_line_body.append(comment_str)
else:
csv_line_body.append("")
csv_body.append(csv_line_body)
cnt = cnt + 1
df = pd.DataFrame(csv_body, columns=csv_header)
df.to_csv("output.csv", index=False)
if __name__ == '__main__':
main()
ー-------------------
作成したCSVイメージ
APIのパラメータ設定(urlの部分)で、出力する条件を指定できる。
ラベルとかアサインなどの複数項目が設定できるところは、上記の方法で記載すれば取れる。