LoginSignup
12
12

More than 5 years have passed since last update.

Redmineのユーザー情報をEXCEL(VBA)で取得してみた

Last updated at Posted at 2015-01-24

前提条件

Redmine側でAPIの利用設定が有効になっている必要があります。[管理]→[設定]→[認証]にある[RESTによるWebサービスを有効にする]のチェックボックスをONにするだけです。

認証方法

普通はログイン画面にユーザー名とパスワードを入力して認証を行いますが,APIを利用する場合はAPIアクセスキーを使います。ご自身のAPIアクセスキーは,Redmineの[個人設定]画面で確認することができます。(おそらく[RESTによるWebサービスを有効にする]がONになっていないと表示されません)

コード

今後メンテするかは微妙ですが,最新版はGitHubに置いておきます。
slangRedmine.cls

使い方

  1. 適当なExcelファイルに[slangRedmine.cls]をインポートする。
  2. 参照設定で[Microsoft XML, v6.0]のチェックボックスをONにする。
  3. 標準モジュールを新規追加し,その中に下記の様なサブルーチンを用意する。

下記サンプルでは,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すれば正常に処理されます。ということで,わざわざ一旦ローカルにファイルとして保存し,それを読み込んで処理するという作りになっています。いわゆる「その場しのぎ」ってやつですね。(^^;

12
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12