JIRA의 Open 프로젝트를 Google spreadsheet에 자동 전기

사외 vs 사내 프로젝트 관리 환경 차이를 어떻게 할지 문제



클라이언트측에서는 JIRA를 사용해 관리를 하고 있습니다만, 사내에서는 Backlog를 사용하고 있습니다. 이것에는 몇 가지 이유가 얽혀 있습니다.
  • 안건에 묶어 매출 금액이나 클라이언트에게는 보여주고 싶지 않은 코멘트(저녀석 빌어 먹을)등도 함께 관리하고 싶다
  • 프로젝트와 관련된 모든 사람의 JIRA 계정은 발행하지 않습니다
  • 글로벌 클라이언트에서 전부 영어 (사내 전원이 부드럽게 영어로 JIRA에서 힘들어지는 것은 아니다)
  • JIRA도 본사의 지역에있는 탓인지 빌어 먹을 무거워서 쓸모가 없다

  • 그래서 역시 표와 같은 것에 JIRA의 내용을 전혀 전기하는 것이 누설이나 실수도 없어도 좋을까 생각해 보았습니다.

    했던 일


  • JIRA의 Rest API로 Open 프로젝트 얻기
  • 성형
  • Google Spreadsheet에 전기

  • 이치오 무거운 무거운 JIRA에서 검색하고 copipe 같은 불모한 작업은 없어졌습니다.
    미세한 운영 개선은 앞으로입니다.

    구현



    jira.py
    import base64
    import requests
    from google.colab import files
    import pandas as pd
    from google.colab import auth
    auth.authenticate_user()
    import gspread
    import gspread_dataframe as gs_df
    from oauth2client.client import GoogleCredentials
    
    gc = gspread.authorize(GoogleCredentials.get_application_default())
    
    # Speradsheetファイル名を指定してシートを開く
    worksheet = gc.open('ファイル名').worksheet('シート名')
    
    base_url = 'https://jira.yourjira.com/'
    authstr  = 'yourID:yourPW'
    authkey  = base64.encodebytes(authstr.encode('utf-8')).decode('ascii')
    auth_header = {'Content-Type':'application/json', 'Authorization':'Basic ' + repr(authkey)}
    
    #トータル件数を見る
    searchUrl=base_url+'/rest/api/2/search?jql=project+yourproject+AND+resolution+%3D+Unresolved'
    result =requests.get(searchUrl, headers=auth_header)
    result =result.json()
    total=str(result['total'])
    print('トータル案件数:'+total+'件')
    
    #取得内容(Fields)を指定して全件取得
    searchUrl=base_url+'/rest/api/2/search?maxResults='+total+'&fields=issuetype,summary,assignee&jql=project+%3D+yourproject+AND+resolution+%3D+Unresolved+ORDER+BY+updated+DESC'
    result =requests.get(searchUrl, headers=auth_header)
    result =result.json()
    issues=result['issues']
    
    #出力
    with open('example.csv', 'w') as f:
      f.write("Type,URL,Summary,Assignee,Reporter,Duedate,Updated\n")
      for issue in issues:
        if issue['fields']['assignee'] is None:
          assignee=""
        else:
          assignee=issue['fields']['assignee']['displayName']
        if issue['fields']['duedate'] is None:
          duedate=""
        else:
          duedate=issue['fields']['duedate']
        f.write(issue['fields']['issuetype']['name']+',https://jira.yourjira.com/browse/'+issue['key']+',"'+issue['fields']['summary']+'",'+assignee+','+issue['fields']['reporter']['displayName']+','+duedate+','+issue['fields']['updated']+'\n')
    
    #CSVで落とす場合
    #files.download('example.csv')
    
    #スプレッドシートに書き出す場合
    df = pd.read_csv('example.csv')
    gs_df.set_with_dataframe(worksheet, df)
    

    할 수 있었습니다.


    요약



    JIRA는 페이지 열고 검색하는 것보다 API가 더 빠릅니다. 페이지 불러오기·표시로 몇 초도 걸리는 이라붙기를 누르는 관점에서도 좋았을지도입니다.

    좋은 웹페이지 즐겨찾기