として多くを使用して直接的な方法はありません、と述べています。ただし、検索スペースを効率的に絞り込むと、それほど悪くはありません。次のPHPコードは、私のセットアップにかなり速く動作しますが、もちろん、あなたの走行距離は異なる場合があります:
<?php
$server = 'jira.myserver.com';
$fromDate = '2012-01-01';
$toDate = '2012-01-31';
$project = 'X';
$assignee = 'bob';
$username = 'my_name';
$password = 'my_password';
$curl = curl_init();
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
# Give me up to 1000 search results with the Key, where
# assignee = $assignee AND project = $project
# AND created < $toDate AND updated > $fromDate
# AND timespent > 0
curl_setopt($curl, CURLOPT_URL,
"https://$server/rest/api/2/search?startIndex=0&jql=".
"assignee+%3D+$assignee+and+project+%3D+$project+".
"and+created+%3C+$toDate+and+updated+%3E+$fromDate+".
"and+timespent+%3E+0&fields=key&maxResults=1000");
$issues = json_decode(curl_exec($curl), true);
foreach ($issues['issues'] as $issue) {
$key = $issue['key'];
# for each issue in result, give me the full worklog for that issue
curl_setopt($curl, CURLOPT_URL,
"https://$server/rest/api/2/issue/$key/worklog");
$worklog = json_decode(curl_exec($curl), true);
foreach ($worklog['worklogs'] as $entry) {
$shortDate = substr($entry['started'], 0, 10);
# keep a worklog entry on $key item,
# iff within the search time period
if ($shortDate >= $fromDate && $shortDate <= $toDate)
$periodLog[$key][] = $entry;
}
}
# Show Result:
# echo json_encode($periodLog);
# var_dump($periodLog);
?>
それだJIRAはAPIを介して、このような基本的な機能をサポートしていません恥。 –
私はちょうどあなたの方法は動作しませんが、実際に実行可能な解決策(実行可能ではない歴史のすべての問題を横断から離れているようです)を実現しました。問題は、あなたのソリューションがあなたのTO_DATEになったときにのみ機能するということです。過去の期間にこのメソッドを使用することはできません。なぜなら、TO_DATE後に更新された問題は、ワークログを持つ可能性があるにもかかわらずカウントされないからです。もう1つの問題は、Jiraが現在と異なる日付に作業時間を入力できることです。指定した期間に更新されたタスクをフィルタするクエリーは機能しません。 –