Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

OutlookVBAでRedmineへRestAPI経由でチケット登録する例

More than 5 years have passed since last update.

Exchange環境でメールからRedmineへチケット自動追加をしたいと思ったが、なかなか既存の情報からはうまくいかず、OutlookVBAで直接RedmineのRestAPIをたたいてチケット追加を試してみた。

まずは、RedmineでRestAPIを有効化する。
「管理」→「設定」と進み、「RESTによるWebサービスを有効にする」をチェック
01API有効化.png

そのあと、個人設定へ移り右側のAPIアクセスキーの「表示」リンクを押して、キーを取得しておく。
02APIキー取得.png

Outlookで書いたVBAマクロは以下の通り

CustomRuleMakeTicket.vb
Option Explicit

Const REDMINE_API_KEY = "<上記で取得したAPIキー>"
Const REDMINE_URL = "http://localhost/redmine" '対象RedmineへのURL

Const PROJECT_ID = 1

Public Sub CustomRule_MakeTicket(Item As Outlook.MailItem)
    Dim ReqStatus

    ReqStatus = PostIssue(Item.Subject, Item.Body)

    If ReqStatus <> False Then
        MsgBox "登録成功"
    Else
        MsgBox "登録失敗"
    End If
End Sub

' PostIssue - Redmineにチケットを登録する
'
' [引数]
' Subject:  チケットの題名
' Body:     チケットの内容
'
' [戻り値]
' True:  成功
' False: 失敗
'
Function PostIssue(Subject As String, Body As String)
    Dim xhr
    Dim RequestURL As String
    Dim RequestBody As String
    Dim bPmary() As Byte

    RequestURL = REDMINE_URL & "/issues.xml?format=xml&key=" &
REDMINE_API_KEY

    Set xhr = CreateObject("Microsoft.XMLHTTP")
    xhr.Open "POST", RequestURL, False
    xhr.SetRequestHeader "Content-Type", "text/xml"

    RequestBody = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & "?>"
    RequestBody = RequestBody & "<issue>"
    RequestBody = RequestBody & "<project_id>" & PROJECT_ID & "</project_id>"
    RequestBody = RequestBody & "<subject>" & Subject & "</subject>"
    RequestBody = RequestBody & "<description>" & Body & "</description>"
    RequestBody = RequestBody & "</issue>"

    xhr.Send (RequestBody)

    If xhr.Status = 201 Then
        PostIssue = True
    Else
        PostIssue = False
    End If

End Function

上記のマクロを登録しておき、Outlookの振り分けルールでスクリプトを実行するアクションを定義し、上記のマクロを指定すれば自動でチケット登録ができるはず

haradaj
コンピュータメーカーでSEやってます。PM職で実機での開発ができないうっぷんを日曜IT大工で発散中
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away