【VBA】Backlog APIライブラリを作成しました

Backlog APIをExcel VBAから呼び出すライブラリvba-backlogを作成しました。
MITライセンスでGitHubに公開しています。

https://github.com/kazusapg/vba-backlog

JSONパーサにはVBA-JSON v2.3.1をフォークして改修したものを使っています。

導入手順

VBE(Visual Basic Editor)で参照設定を2つ追加します。
参照設定の方法は以下をご覧ください。

VBAで参照設定を行う

  1. Microsoft Scripting Runtime
  2. Microsoft XML v6.0

続いて、src/フォルダ配下の.bas.clsをすべてVBEにインポートします。

使い方

クライアントの初期化

Dim client As BacklogClient
Set client = New BacklogClient
Call client.Init("https://xxxx.backlog.jp", "APIキー")

第1引数にはBacklogのスペースURLを渡します。
末尾にスラッシュが付いていても、Initが自動で除去します。

課題一覧の取得

検索条件は公式ドキュメントのパラメータ名をそのままキーにしてDictionaryで渡します。

Dim queryDic As Dictionary
Set queryDic = New Dictionary

'複数指定する場合はCollectionを値にする(内部でprojectId[]=v1&projectId[]=v2に展開)
queryDic.Add "projectId[]", 1073836557
queryDic.Add "count", 20

Dim issueList As Collection
Set issueList = client.GetIssues(queryDic)

Dim item As Variant
For Each item In issueList
  Debug.Print item.IssueKey, item.StatusName, item.Summary
Next

クライアントは課題をIssueクラスに変換して返します。

課題の追加

Dim paramsDic As Dictionary
Set paramsDic = New Dictionary

paramsDic.Add "projectId", 1073836557
paramsDic.Add "summary", "タイトル"
paramsDic.Add "issueTypeId", 1074178720
paramsDic.Add "priorityId", 3

Dim newIssue As Issue
Set newIssue = client.CreateIssue(paramsDic)
Debug.Print newIssue.IssueKey

コメントの追加

Dim paramsDic As Dictionary
Set paramsDic = New Dictionary
paramsDic.Add "content", "対応しました。ご確認ください。"

Dim comment As BacklogComment
Set comment = client.CreateIssueComment("PROJ-123", paramsDic)
Debug.Print comment.Id

エラー処理

HTTPステータスが400以上だと、クライアントがErr.Raiseで例外を発生させます。
詳細はクライアントのLastErrorプロパティから取得できます。

Sub Example()
  On Error GoTo ErrorHandler

  Dim issue As Issue
  Set issue = client.GetIssue("TEST-1")
  GoTo Finally

ErrorHandler:
  Debug.Print Err.Description
  Debug.Print client.LastError.StatusCode   '→ 404
  Debug.Print client.LastError.FirstMessage '→ "No project."

Finally:
  Set client = Nothing
End Sub

参考URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。