PythonでJira APIを操作する

みなさんこんにちは。 Jiraからのレポートのダウンロードを自動化する考えがありました。 Pythonはお気に入りのツールであったため、選択はJIraのモジュールに基づいて行われ、APIを操作できました。 誰にそれが面白いか私はキャットでお願いします。



画像



Atlassianには、モジュールの使用に関する公式ドキュメントがあります。 モジュール自体は「jira」と呼ばれます。 伝統的に、次のコマンドでモジュールをインストールします。



pip install jira
      
      





次に、モジュールをコードに直接インポートします。



 from jira import JIRA
      
      





サーバー自体に接続するには、必要なパラメーターをサーバーに渡してクライアントを作成する必要があります。



 jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key))
      
      





パスワードで認証するために、apiキーの代わりにパスワードを転送できます。 認証が渡されると、アクセス可能なアクティブなAPIクライアントができます。



可能性は確かに無限ではありませんが、かなり広いです。 特定の週のタスクを引き出し、Excellで費やした時間に関するレポートを作成する必要がありました。 プロジェクト自体、タスク番号、またはJQLクエリによってタスクを直接取得できます。 検索ツールは非常に柔軟でシンプルです。 APIクライアントから返されるすべての情報は文字列で送られるため、それを操作するには追加の手順が必要です。

jqlリクエストを作成し、そのタスクをピックアップします。



 jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql)
      
      





残念ながら、そのようなリクエストを介して取得されるタスクにworklogプロパティがない理由はまだわかりませんでした。 何が間違っていたかを理解しようといくつか試みた後、私は丁寧にjiraに番号でタスクを尋ねました。



 issue = jira.issue(issue_key)
      
      





このメソッドによって返されるタスクでは、ワークログのリストを含むワークログフィールドがありました。 その結果、jqlクエリによってタスクを取得し始め、タスク番号を引き出し、その後必要な情報を引き出しました。



 worklogs = issue.fields.worklog.worklogs
      
      





同様の行を使用すると、特定のタスクからすべての時間記録を引き出すことができます。 各エントリには、秒とテキスト表現(1h、3dなど)の両方で時間に関する情報があります。

その後、すべてが簡単です。期間に合わない廃棄を行ってください。私の場合、週番号は一致しません。



 worklog_date_str = re.search(r'(\d{4}-\d{2}-\d{2})', worklog.started) worklog_date = datetime.strptime(worklog_date_str.group(0), '%Y-%m-%d') if worklog_date.isocalendar()[1] == weak_number:
      
      





日付は文字列で返されるため、単純な正規表現を使用してそれを取得し、次の行で必要なタイプを取得します。 式worklog_date.isocalendar()[1]を使用すると、週の数を調べることができます。これは、必要なものと比較されます。 一致する場合は、踏みつけて残りのデータを書き込みます。



一般に、上記のモジュールを使用すると、かなり広範なタスクを解決できます。時間と欲求だけが必要です。



UPD



タスクを再度リクエストすることはできませんが、単に必須フィールドを展開してください

github.com/pycontribs/jira/blob/master/jira/client.py#L2371

おかげでHSerg



All Articles