QLOOKアクセス解析
ホーム   »  スポンサー広告  »  スポンサーサイト   »  Redmine  »  RedmineのチケットをVBAで登録してみる

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RedmineのチケットをVBAで登録してみる

現場のWBSからチケット登録を行いたかったのでVBAで作成しました。
その時のサンプルを少し修正して雛型として公開します。
トラッカーやカテゴリ、チケットの親子関係等は
色々カスタマイズしているのですが、とりあえず以下のサンプルは固定値を入れているので
皆さんの環境に合わせてカスタマイズしてもらえれば良いと思います。

サンプルではredmineで利用しているDBとはODBC接続しています。

CSVからの登録などのプラグインはあるのですが
今回自作をしたのは、WBSから登録する際に単純にチケット登録
するだけでなく、フェーズ別にカテゴリ設定したり、
バージョンを設定したり、集計用にカスタムフィールドを設定したり・・
と色々な事をやりたかったので自作する事にしました。

◆バージョンの指定
versionsテーブルのidで指定します。

◆チケットの親子関係を作る場合
root_id、parent、lft、rgtを指定しないといけません。

◆担当者id、作成者id
usersテーブルのidと紐付きます。

◆優先度、プロジェクトID、ステータスID、チケット作成者ID
これらはWBSから登録時に、同じ値を設定するので
Excel上で共通設定として指定する形としています。
それぞれRedmineのテーブルとの紐付けは以下の通りです。

優先度:enumerations テーブルの type がIssuePriority
プロジェクトID:projects.id
ステータスID:issue_statuses.id
チケット作成者ID:users.id


Sub insertTicket()
' DB接続オブジェクト
Dim con As ADODB.Connection
Set con = New ADODB.Connection

' DB接続Open
' ここではDataSource名「dsredmine」を利用している。
' 個々の環境に合わせて下さい。
con.connectionString = "Provider=MSDASQL.1;Data Source=dsredmine"
con.Open

Dim start_date As String
Dim fixed_version_id As String
Dim root_id As String
Dim lft As String
Dim rgt As String
Dim subject As String
Dim assigned_to_id As String
Dim tracker_id As String
Dim category_id As String
Dim due_date As String
Dim parent_id As String
Dim description As String

'=================================
' 以下はツール実行時の情報を設定
'=================================
Dim updated_on As String
Dim created_on As String

'チケット作成日
created_on = Format(Date, "'yyyy-mm-dd ") & Format(Now, "hh:nn:ss'")

'チケット更新日
updated_on = Format(Date, "'yyyy-mm-dd ") & Format(Now, "hh:nn:ss'")

'===========================================
' 以下はインポートするExcelデータから取得する。
' とりあえず以下は固定値。固定値の部分をセル取得などにカスタマイズする。
'===========================================

'開始日
start_date = "'2011-11-25'"

'終了日
due_date = "'2011-11-30'"

'バージョン (versions の ID)
fixed_version_id = "7"

'ルートID
'親子関係のあるチケットの場合に継承のルートになるチケットのIDを設定。
'必ずしも直接の親チケットIDではないことに注意。
'継承関係が親子までの場合は parent_idと同じ値が設定される。
'親子関係がない場合は 自身のIDを設定。
root_id = "123"

'親チケットID
'初期値はNULL。親子関係がある場合は親チケットIDを設定。
'root_id と異なり直接の親のIDを指定する。
parent_id = "NULL"

'lft/rgt
'チケットの入れ子を表現
lft = "1"
rgt = "2"

'件名
subject = "'WBSのテスト'"

'担当者
assigned_to_id = userIdFromName("hogehoge")

'トラッカーID
tracker_id = "14"

'カテゴリーID
category_id = "1"

'説明
description = "'説明テスト'"


'=================================================
' 以下はチケット共通設定なので共通設定シートのようなものを
' 用意してそこから取得する。
'=================================================
Worksheets("ツール").Select

'優先度 (enumerations の type がIssuePriority)
Dim priority_id As String
priority_id = ActiveSheet.Range("D13").Value

'プロジェクトID (projects.id)
Dim project_id As String
project_id = projectIdSetting()

'ステータスID (issue_statuses.id)
Dim status_id As String
status_id = ActiveSheet.Range("D15").Value

'チケット作成者ID (users.id)
Dim author_id As String
author_id = ActiveSheet.Range("D16").Value

'=================================
' SQL文の生成
'=================================
Dim sql As String

sql = _
"INSERT INTO `issues` (`start_date`, `estimated_hours`, `priority_id`, `created_on`, `project_id`, `is_private`," & _
"`fixed_version_id`, `lock_version`, `root_id`, `lft`, `subject`, `assigned_to_id`," & _
"`updated_on`, `done_ratio`, `tracker_id`, `category_id`, `due_date`, `parent_id`, `description`, `status_id`," & _
"`author_id`, `rgt`) VALUES" & _
"(" + start_date + ", 0.0," & _
priority_id + "," & _
created_on + "," & _
project_id + "," & _
"0," & _
fixed_version_id + ", 0, " & _
root_id + "," & _
lft + ", " & _
subject + "," & _
assigned_to_id + ", " & _
updated_on + ", 0, " & _
tracker_id + "," & _
category_id + ", " & _
due_date + "," & _
parent_id + "," & _
description + "," & _
status_id + "," & _
author_id + ", " & _
rgt + ")"

' Insetr実行
con.Execute sql

' DB接続クローズ
con.Close
End Sub
Comment
Trackback
Trackback URL
Comment Form
管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。