问题描述
我正在Excel中使用VBA和Tim Hall的惊人VBA-Tools,我几乎可以完成与trello相关的所有事情,创建名片,列表,评论等
最近几天让我感到沮丧的是,我无法在卡的自定义字段中输入值,我尝试了所有可以想到的事情
这是代码
Sub atualizaCustomField(listaNome As String,cardNome As String,idCF As String,valor As String)
Dim Client As New WebClient
Client.BaseUrl = "https://api.trello.com/1/"
Dim Request As New WebRequest
Request.ContentType = "application/json"
Request.Method = WebMethod.HttpPut
Request.Resource = "cards/{idCard}/customField/{idCustomField}/item"
Request.AddUrlSegment "idCard",pegaIDCard(listaNome,cardNome)
Request.AddUrlSegment "idCustomField",idCF
Request.AddQuerystringParam "key",ApplicationKey
Request.AddQuerystringParam "token",UserToken
Debug.Print Request.FormattedResource
Dim Response As WebResponse
'Set Response = Client.Execute(Request)
Set Response = Client.PostJson(Client.BaseUrl & Request.FormattedResource,valor)
Debug.Print valor
Debug.Print Response.StatusCode & ": " & Response.Content
End Sub
与此不同的是,您必须发布JSON而不是像其他所有请求一样简单地发出请求,必须与该示例匹配(来自trello开发者网站):
{
"value": {
"text": "<string>"
}
}
在我的代码中,变量“ valor”包含此字符串。
解决方法
我知道这是 9 个月前的事,但我遇到了同样的问题,并找到了可能对其他人有用的解决方案。
正如OP所说,“值”字段需要具有json格式并放置在请求正文中。这是通过将 Dictionary 类型传递给 .AddBodyParameter 方法来实现的。
Dim body as Object
Set body = New Dictionary
body.Add "text","<string>"
Request.AddBodyParameter "value",body