[PYTHON] Publier automatiquement le projet Open de JIRA sur la feuille de calcul Google

Différences d'environnement de gestion de projet externe et interne

J'utilise JIRA pour la gestion côté client, mais j'utilise Backlog en interne. Il y a plusieurs raisons à cela.

――Je veux gérer le montant des ventes et les commentaires que je ne veux pas montrer au client (cette merde) etc. en association avec le projet

Donc, après tout, je me suis demandé s'il serait correct de publier le contenu de JIRA dans quelque chose comme une table sans omissions ni erreurs.

Ce que j'ai fait

Le travail stérile de recherche et de copie avec JIRA, qui est lourd et lourd, n'est plus nécessaire. Des améliorations opérationnelles mineures sont encore à venir.

la mise en oeuvre

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())

#Feuille de calcul Spécifiez le nom du fichier pour ouvrir la feuille
worksheet = gc.open('nom de fichier').worksheet('Nom de la feuille')

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)}

#Voir le nombre total
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('Nombre total de projets:'+total+'Cas')

#Contenu de l'acquisition(Fields)Obtenez tous les enregistrements en spécifiant
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']

#production
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')

#Lors de la suppression avec CSV
#files.download('example.csv')

#Lors de l'exportation vers une feuille de calcul
df = pd.read_csv('example.csv')
gs_df.set_with_dataframe(worksheet, df)

C'est fait. 2020-08-06_08h44_51.png

Résumé

JIRA a une API plus rapide que l'ouverture d'une page et la recherche. Cela a peut-être été bon du point de vue de la suppression de la frustration qui prend quelques secondes pour charger et afficher la page.

Recommended Posts

Publier automatiquement le projet Open de JIRA sur la feuille de calcul Google
Sélénium et python pour ouvrir Google