【VBA】Backlog APIで課題を操作する

VBA

Backlogはタスクを管理するWebアプリケーションです。
APIが提供されているので、ブラウザ上のBacklogでできる操作をAPIから行えます。
今回はVBAからAPIを利用して課題の登録と課題一覧の取得を行ってみます。

動作環境

  • Windows10 Home 64bit
  • Microsoft Office 365 Business
  • Backlog フリープラン

事前準備

参照設定

以下の3つの参照設定を利用するので、VBAエディターの参照設定でチェックを入れます。

  1. Microsoft XML v6.0
  2. Microsoft Scripting Runtime
  3. Microsoft VBScript Regular Expressions 5.5

参照設定の方法は以下をご覧ください。

VBAで参照設定を行う

VBA-JSONの導入

Backlog APIでは結果がJSON形式で返ってきます。
VBAではJSONをパースする標準ライブラリがないので、VBA-JSONを利用します。

VBA-tools/VBA-JSON
JSON conversion and parsing for VBA. Contribute to VBA-tools/VBA-JSON development by creating an account on GitHub.

git cloneまたはzipファイルをダウンロードして、JsonConverter.basを
VBAのプロジェクトにインポートします。

導入方法はVBAエディターを開き、プロジェクトウィンドウでVBAProjectを
右クリックしファイルのインポートをクリックします。

VBA-JSONのJsonConverter.basを選択して「開く」をクリックします。

標準モジュールにJsonConverterが表示されれば、VBA-JSONの導入は完了です。

APIキーを取得

Backlog APIを利用するにはAPIキーを取得する必要があります。

Backlog ヘルプセンター
Backlog ヘルプセンターではBacklogを初めて使う方向けの使い方ガイド、運用のコツやプロジェクト管理に役立つ活用ガイド、よくあるご質問などをご用意しております。ユーザーコミュニティでは他のユーザーとつながって、Backlogの疑問を解決することもできます。

configシートを用意し、B1セルに利用しているBacklogのURLと
B2セルに取得したAPIキーを入力しておきます。

課題の追加

課題追加前の準備

課題の追加には事前に以下の値を調べておく必要があります。

  • 課題を登録するプロジェクトのID
    • プロジェクト設定のURLのproject.idから調べる
      • https://スペース名.backlog.com/EditProject.action?project.id=xxxxx
    • Backlog APIのプロジェクト情報の取得を利用する
  • 課題の種別のID
      • プロジェクト設定の種別から該当の種別を選択してURLのissueType.idから調べる
        • https://スペース名.backlog.com/EditIssueType.action?issueType.id=xxxxx&issueType.projectId=yyyyy
  • 課題の優先度のID

 

APIを利用して課題を追加

事前に準備しておいた情報を利用して、BacklogAPIで課題を追加します。
テスト案件という件名で登録してみます。

 

SetParameters内でBacklogに登録に必要な情報をDictionaryに加えています。
課題の追加の内容を元に課題開始日や終了日なども設定できます。

コードを実行するとAPIの結果がJSON形式で返ってくるので
返ってきた結果をメッセージボックスに表示しています。

Backlog上でもAPIを利用して課題を登録できたことが確認できます。

課題一覧の取得

プロジェクト内に課題が2つあるので、APIを利用して課題のキーと件名をすべて取得してみます。

issueシートを追加しておき、取得した結果をissueシートに書き込みます。

下記のコードでAPIを利用して課題の一覧を取得しています。

 

Dictionary型のparamsを用意して、課題一覧取得の検索条件を組み立てています。
今回はプロジェクトIDのみを検索条件に指定しました。
他の検索条件も加えたい場合は課題一覧の取得のクエリパラメータを元に
条件を加えれば、更に細かい条件で課題を取得できます。

 

URLのキャッシュがあると、前のGETの結果を利用してしまうので
下記を参考にRequestHeaderに値を入力してsendします。

Excel VBA で サーバーが動いていないのにMSXML2.XMLHTTPのレスポンスが返る?|teratail
CentOSにてPython FlaskによるWebサーバーを立ち上げ、Excel VBAよりこのサーバーに対するHTTP送受信を試みています。VBAにて以下のコードのようにリクエストすると、一見、正常のレスポンスが返ってきます。(通信エラーなどは発生していません) Set o

 

Backlog APIの結果が複数の内容を含むもの(課題一覧の取得ユーザー一覧取得)ではレスポンスボディの最初に[と最後に]が付いています。事前準備で導入したVBA-JSONは[]が付いているとパースできないため括弧を削除しておきます。

 

VBA-JSONはBacklog APIの結果が複数の内容を含むもの(課題一覧の取得ユーザー一覧取得)で最後の内容しか取得できません。SplitJsonIssueListResult内で正規表現を使用して、結果をすべて取得できるようにします。

コードを実行するとissueシートにプロジェクトの課題キーと件名の一覧が表示されます。

Backlog APIで利用できること

  • Excelなどに課題テンプレートを用意しておきAPIを利用して課題テンプレートを登録
  • 登録時に返ってきたBacklogの登録IDを利用して親子課題の設定
    • 今回はフリープランを利用しているので親子課題は設定できませんでしたが・・
  • 課題の編集

Backlog APIで色々できるので詳しくはBacklog APIを参照してください。

Backlog API とは | Backlog Developer API | Nulab
開発者コミュニティで公開しているAPIを使って、プロジェクト管理ツール Backlog と連携

 

コメント