質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

Q&A

解決済

1回答

9550閲覧

Redmine Rest APIでチケット登録するときのカスタムフィールドに値を入れたい

keigo

総合スコア9

Redmine

Redmineは、プロジェクトのタスク管理、進捗管理、情報共有が可能な、 オープンソースプロジェクト管理ソフトウェアです。

0グッド

0クリップ

投稿2020/06/09 07:10

お世話になります。
VBAを使ったRedmineのチケット登録で困っています。

・やりたいこと
Redmineのチケット新規登録をExcel VBAで行いたい。

・質問したいこと
チケットのタイトルだけ指定した場合は問題なくチケットの新規登録できますが、カスタムフィールドに値をいれると「400」という戻り値が返ってきてチケットが登録できません。
カスタムフィールドに値を入れて新規チケット登録するにはどうすればいいのでしょうか?

・試したこと
テスト用のソースコードですが、下記のコードで試しています。
「ここからカスタムフィールド」と「ここまでカスタムフィールド」の間のコードをコメントアウトすると正常にチケットが登録されます。
しかし、コメントアウトを解除すると「400」というエラーが出てチケットが登録できません。

下記の記述以外に下記のような記述を85試してみましたが結果は同じでした。

<custom_field_values>
<85>カスタムなテキストフィールド</85>
</custom_field_values>

カスタムフィールドIDはRedmineの「管理」「カスタムフィールド」の項目のソースを表示させ下記の項目で調べました。
イメージ説明

VBA

1Option Explicit 2 3Public Const REDMINE_URL As String = "https://'URL'" 4 5Public Sub Test1() 6 7 Dim requestStatus As String 8 requestStatus = addIssue( _ 9 "'APIキー'", _ 10 "追加テスト") 11 MsgBox requestStatus 12 13End Sub 14 15Public Function addIssue( _ 16 ByVal apiKey As String, _ 17 ByVal subject As String) As String 18 19 Dim sendBody As Variant 20 sendBody = "<?xml version=""1.0""?><issue>" 21 sendBody = sendBody & "<project_id>9</project_id>" 22 sendBody = sendBody & "<subject>" & subject & "</subject>" 23'ここからカスタムフィールド 24 sendBody = sendBody & "<custom_fields type=array>" 25 sendBody = sendBody & "<custom_field id=""85"">" 26 sendBody = sendBody & "<value>5</value>" 27 sendBody = sendBody & "</custom_field>" 28 sendBody = sendBody & "</custom_fields>" 29'ここまでカスタムフィールド 30 sendBody = sendBody & "</issue>" 31 32 Dim xmlHttp As New MSXML2.XMLHTTP60 33 With xmlHttp 34 .Open "POST", REDMINE_URL & "issues.xml?format=xml&?key=" & apiKey, False 35 .SetRequestHeader "Content-Type", "text/xml" 36 .Send sendBody 37 addIssue = CStr(.Status) 38 End With 39 Set xmlHttp = Nothing 40 41End Function

・環境
OS:Windows10
Excel:Office 365 ProPlus バージョン1908
Redmine:3.4.4.stable
Redmine稼働サーバーOS:不明

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

【修正前】
sendBody = sendBody & "<custom_fields type=array>"

【修正後】
sendBody = sendBody & "<custom_fields type=""array"">"

投稿2020/06/12 00:55

keigo

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問