# jira rest api文档:https://docs.atlassian.com/software/jira/docs/api/REST/8.22.0/ import requests import json from datetime import datetime import pandas as pd from rich.console import Console console = Console() url = "https://jira.ingeek.com/rest/api/2/search" payload = json.dumps({ "jql": "project=IDKSD && created > startOfMonth(-1)", "startAt": 0, "maxResults": 300, "fields": [ "key", "summary", "status", "reporter", "assignee", "customfield_10509", "customfield_11211", "created", "updated", "customfield_11224", "customfield_11226", "customfield_11223", "customfield_11222" ] }) headers = { 'X-ExperimentalApi': 'opt-in', 'Content-Type': 'application/json', 'Authorization': 'Basic Z3V0aWFueWk6V09TSElndHkxMjM=', 'Cookie': 'JSESSIONID=586C98DCFAD3ECE852C4DD029D27FFF2; atlassian.xsrf.token=BQE4-7MHA-QKOH-CY3T_95d1d08bdf54368525ff242f692b3263d3fc38e6_lin' } response = requests.request("POST", url, headers=headers, data=payload) results = json.loads(response.text) issues = results['issues'] for issue in issues: index = issues.index(issue) if not issue['fields']['assignee']: assignee = "Unassigned" else: assignee = issue['fields']['assignee']['displayName'] def get_customfield_value(key): if issue['fields'][f"{key}"] is not None: if issue['fields'][f"{key}"]['completedCycles']: value = issue['fields'][f"{key}"]['completedCycles'][0]['elapsedTime']['friendly'] else: value = None else: value = None return value if issue['fields']['customfield_10509'] is not None: customfield_10509 = issue['fields']['customfield_10509']['value'] else: customfield_10509 = None issue = dict( key=issue['key'], summary=issue['fields']['summary'], 项目=customfield_10509, 咨询入口=issue['fields']['customfield_11211']['value'], reporter=issue['fields']['reporter']['displayName'], assignee=assignee, status=issue['fields']['status']['name'], created=datetime.strftime(datetime.strptime( issue['fields']['created'], '%Y-%m-%dT%H:%M:%S.000+0800'), '%Y-%m-%d %H:%M'), updated=datetime.strftime(datetime.strptime( issue['fields']['updated'], '%Y-%m-%dT%H:%M:%S.000+0800'), '%Y-%m-%d %H:%M'), 项目经理响应=get_customfield_value('customfield_11224'), 研发团队响应=get_customfield_value('customfield_11226'), 测试团队响应=get_customfield_value('customfield_11223'), 售后服务台首次响应=get_customfield_value('customfield_11222') ) issues[index] = issue excelwriter = pd.ExcelWriter(f"本月售后服务台Jira统计.xlsx") pd.DataFrame(issues).to_excel(excel_writer=excelwriter, sheet_name="售后服务台Jira统计") excelwriter.save()