JSON发布可从VBA更新Trello自定义字段

问题描述

我正在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