前提条件
Redmine側でAPIの利用設定が有効になっている必要があります。[管理]→[設定]→[認証]にある[RESTによるWebサービスを有効にする]のチェックボックスをONにするだけです。
認証方法
普通はログイン画面にユーザー名とパスワードを入力して認証を行いますが,APIを利用する場合はAPIアクセスキーを使います。ご自身のAPIアクセスキーは,Redmineの[個人設定]画面で確認することができます。(おそらく[RESTによるWebサービスを有効にする]がONになっていないと表示されません)
コード
今後メンテするかは微妙ですが,最新版はGitHubに置いておきます。
slangRedmine.cls
使い方
- 適当なExcelファイルに[slangRedmine.cls]をインポートする。
- 参照設定で[Microsoft XML, v6.0]のチェックボックスをONにする。
- 標準モジュールを新規追加し,その中に下記の様なサブルーチンを用意する。
下記サンプルでは,Redmineに登録されている全ユーザーのフルネーム(FirstNameとLastNameを連結したもの)をイミディエイトウィンドウに表示します。
Option Explicit
Public Sub main()
Dim myRedmine As New slangRedmine
Dim userData As Object
Dim numUsers As Integer
Dim i As Integer
myRedmine.setBaseUri ("https://hoge.com/redmine/") '(1/4)BaseUri設定
myRedmine.setApiKey ("XXXXXXXXXX") '(2/4)APIアクセスキー設定
myRedmine.setTmpFilePath ("c:\") '(3/4)一時ファイル作成用ディレクトリ設定
Set userData = myRedmine.getUserData() '(4/4)getUserDataをコール
numUsers = userData.Length
For i = 0 To numUsers - 1
Debug.Print userData.Item(i).childNodes.Item(3).nodeTypedValue & " " _
& userData.Item(i).childNodes.Item(2).nodeTypedValue
Next
End Sub
(1/4) BaseUri設定
https://hogehoge.com/redmine/
の部分はご自身が利用しているRedmineのURLに変更してください。MyRedmineのサービスを利用している場合だとhttps://my.redmine.jp/[AccountName]/
みたいな感じになると思います。
(2/4) APIアクセスキー設定
XXXXXXXXXX
部分をご自身のAPIアクセスキーに書き換えます。実際は40文字くらいの長さです。
(3/4) 一時ファイル作成用ディレクトリ設定
c:¥
部分を必要に応じて変更してください。一応,一時ファイルは正常終了後に削除される作りにしています。
(4/4) getUserDataをコール
参考サイト
以下のサイト様を参考にさせて頂きました。
あとがき
クラスのコードを読んだ人の中には「なんでわざわざXMLファイルを保存してんの?」と思われた方も多いと思います。もちろん理由があって,直接サーバ上のXMLファイルをLoadしようとすると「システムでは利用できないエンコーディングだから解析できませんよ」的なエラーがでます。
色々とネット上を徘徊しながら解決策を模索したのですが,結局このエラーは解決できませんでした。ただ,なぜか一旦ローカルに保存してからLoadすれば正常に処理されます。ということで,わざわざ一旦ローカルにファイルとして保存し,それを読み込んで処理するという作りになっています。いわゆる「その場しのぎ」ってやつですね。(^^;