前提・実現したいこと
PythonでBacklogAPIのチーム一覧の取得するAPIをコールし、csvに全てのチーム名,ユーザー名,ユーザーメールアドレスを出力するツールを作ろうとしています。
https://developer.nulab.com/ja/docs/backlog/api/2/get-list-of-teams/#%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E4%BE%8B
上記ツール作成に2点ほど力及ばない箇所があります。
・リクエストする際に「○個目から100個(最大)下さい」のようなパラメータを付与する必要があり、ループさせて全て取得する方法を見つけられていません。
・jsonの戻り値をチーム名,ユーザー名,ユーザーメールアドレスのようにパースできておりません。
該当のソースコード
Python
1import pathlib 2import os 3import requests 4import urllib.request 5import json 6import csv 7import pandas as pd 8from collections import OrderedDict 9 10#定義 11ListFile = pathlib.Path('.\BacklogTeamsList.txt') # 出力先ファイル 12jsonFile = pathlib.Path('.\BacklogTeamsList.json') # 出力先ファイル 13 14# 環境変数からBACKLOG_URLを取得、なければ入力を求め一時利用 15def getBACKLOG_URL(): 16 if os.getenv('BACKLOG_URL')==None: 17 print('環境変数からBACKLOG_URLを確認できませんでした。※登録しておくと今後入力が無くて便利です。') 18 result = input("BACKLOG_URLを入力してください。例[https://xxxx.backlog.jp] >>>") 19 else: 20 result = os.getenv('BACKLOG_URL') 21 return result 22 23# 環境変数からBACKLOG_API_KEYを取得、なければ入力を求め一時利用 24def getBACKLOG_API_KEY(): 25 if os.getenv('BACKLOG_API_KEY')==None: 26 print('環境変数からBACKLOG_API_KEYを確認できませんでした。※登録しておくと今後入力が無くて便利です。') 27 result = input("BACKLOG_API_KEYを入力してください。>>>") 28 else: 29 result = os.getenv('BACKLOG_API_KEY') 30 return result 31 32# Backlogチーム一覧作成処理 33def main(): 34 for n in range(0, 99999, 100) 35 r = requests.get(BACKLOG_URL + '/api/v2/teams', params={'apiKey': BACKLOG_API_KEY, 'count': '100', 'order': 'asc', 'offset': n}) 36 37 if r.status_code == requests.codes.ok: 38 data = r.json() 39 str_json = json.dumps(data, ensure_ascii=False, indent=4) 40 data_json = json.loads(str_json) 41 42 # なう 43 for data_json_key in data_json: 44 for data_json_val in data_json_key["name"]: 45 print(data_json_key["name"],data_json_key["name"]) 46 for data_json_val in data_json_key["members"]: 47 print(data_json_key["members"]) 48 49 ## json出力 50 #with jsonFile.open(mode='w') as f: 51 # print(str_json, file=f) 52 53 # csv出力 54 #with ListFile.open(mode='w') as f: 55 # df = pd.read_json(str_json) 56 # df.to_csv(f) 57 58# メイン処理 59if __name__ == '__main__': 60 BACKLOG_URL = getBACKLOG_URL() 61 BACKLOG_API_KEY = getBACKLOG_API_KEY() 62 main()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。