backlog API: カテゴリ別・種別別にチケットを取得する方法〜単一・複数種別指定方法〜

backlog-logoAPI関連
この記事は約5分で読めます。

さて、久しぶりにbacklog API関係の解説記事です。

backlog APIの基本的な使い方に関する記事は以下にありますので、興味ある方はどうぞ。

今回はカテゴリ別・種別にチケットを取得する方法です。単一指定で取得する方法と、複数指定で取得する方法(こっちがメイン)を紹介します。

スポンサーリンク
もしも_楽天

種別でチケットを取得する方法

単一種別で指定する場合

チケットを取得するAPIエンドポイント

それではまず種別でチケットを取得する方法です。利用するAPIはチケット取得なので以下です。

api/v2/issues

このままAPIを叩きに行くとチケットが条件なしで全部が対象になるので、種別でチケットを指定する方法の紹介です。

種別でチケットを指定する方法

チケットを種別で指定する場合、以下のクエリパラメータを追加します。

&issueTypeId=XXXX

issueTypeIdをクエリで指定すれば、1種類の種別が指定できます。

単一種別で指定する場合のサンプルスクリプト

単一種別で指定する場合、以下のようなスクリプトになります。

function getIssuesByIssueType_single() {

  const apiKey = PropertiesService.getScriptProperties().getProperty("API_KEY")
  const url = "https://xxxxxxx/"; // url指定
  const endopoint = "api/v2/issues";

  //issueTypeIdの複数指定
  let target_types = "&issueTypeId=xxxxx"
  
  //100件取得、issueTypeId
  let create_url = url + endopoint + "?apiKey=" + apiKey + "&count=100" + target_types;
  
  let data_json = UrlFetchApp.fetch(create_url);
  let data = JSON.parse(data_json)
}

複数種別でチケットを指定する場合

複数種別で指定する場合、パラメータの記載が少し異なります。

種別でチケットを指定する方法

チケットを種別で指定する場合、以下のクエリパラメータを追加します。

&issueTypeId[]=xxxxx&issueTypeId[]=xxxxx

issueTypeId[]という形で、複数種別を指定することで対応可能です。[]が特徴的ですね。これは、他の複数指定のパラメータを入れる場合も同様の記載方法をbacklogが採用しているので、覚えておくといいと思います。

複数種別で指定する場合のサンプルスクリプト

今回は複数種別で指定して、かつ親子課題を子以外で指定しつつ、スプレッドシートに書き出す部分まで含んだスクリプトです。ちょっと複数要素絡んでわかりにくくなっていますが、代わりにoutputされるもののイメージも添付しておきます。

function getIssuesByIssueType() {

  const apiKey = PropertiesService.getScriptProperties().getProperty("API_KEY")
  const url = "https://xxxxxxx/"; // url指定
  const endopoint = "api/v2/issues";

  //issueTypeIdの複数指定
  let target_types = "&issueTypeId[]=xxxxx&issueTypeId[]=xxxxx&issueTypeId[]=xxxxx"
  
  //親子課題の抽出対象:子課題以外で設定
  const parent_child_status = "&parentChild=1";

  //100件取得、issueTypeId、親子課題(子課題以外)
  let create_url = url + endopoint + "?apiKey=" + apiKey + "&count=100" + target_types + parent_child_status ;
  
  let data_json = UrlFetchApp.fetch(create_url);
  let data = JSON.parse(data_json)
  
  

  let output = data.map(a => [a.issueKey, a.summary, pick_up_name(a.category[0]),a.issueType.name, pick_up_name(a.milestone[0]),a.created]);
  
  let sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheetName");
  sht.getRange(2,1,output.length,output[0].length).setValues(output); 
}

function pick_up_name(obj){
  Logger.log(obj)
  if(obj){return obj.name}else{return ""}
}

outputのイメージは以下のような形です。

まとめ

さて、今回は【backlog API: カテゴリ別・種別別にチケットを取得する方法〜単一・複数種別指定方法〜】として、種別でチケットを指定して取得する方法を紹介しました。

ソフトウェアのチケット管理でbacklogを利用している場合、経理でもチケットステータスなどを取得してソフトウェアの計上金額管理を行う場合などに利用できますね。

まぁチャージ時間は別のツールtoggleとかSSのレポートなどで別途集計が必要ですが。。

backlogの複数パラメータの指定方法が少し特殊なので、その紹介がメインでした。

では、よきbacklog生活をw

参考:backlogの始め方

とりあえず試してみたい方は30日間無料でトライアルできますので、試しに触ってみるのもありだと思います。何はともあれ触ってみるのが一番自分にしっくりくるかわかりやすいものです。

タイトルとURLをコピーしました