使用curl更新列选项列表值时出现Smartsheet API错误

时间:2015-10-22 11:03:04

标签: php curl smartsheet-api

早上好, 我正在寻找一种方法来更新我的Smartsheet中列中的下拉值。关闭Smartsheet API 2.0,我设法提出以下代码与curl一起使用,但是我在CMD中运行时遇到以下错误。

以下是我使用的代码:

curl https://api.smartsheet.com/2.0/sheets/7654838910642052/columns/4 -H "Authorization: Bearer 6cn0otb4tdjueqzuflgnkzff17" -X PUT -d '{"title":"Weekend Date","index":4, "type" : "PICKLIST", "options" :["31-OCT-2015"]}' -k

我从CMD收到的错误信息如下:

C:\New>curl https://api.smartsheet.com/2.0/sheets/7654838910642052/columns/4 -H "Authorization: Bearer 5cn0otb4tdjueqzuflgnkzff17" -X PUT -d '{"title"
:"Weekend Date","index":4, "type" : "PICKLIST", "options" :["31-OCT-2015"]}' -k
{"errorCode":1124,"message":"Invalid Content-Type header. Media type not supported."}curl: (6) Could not resolve host: type; Host not found
¶hA▓╔ôÒ±$═»ù0♠~¡lk§☺▄ÜQ­K¡^ Õf ƒîa♀ÛæçÂ"õ8Ê╝±↕åÊJcurl: (6) Could not resolve host: PICKLIST,; Host not found
curl: (6) Could not resolve host: options; Host not found
curl: (3) [globbing] error: bad range specification after pos 3

非常感谢我能得到任何帮助!这个错误真的很烦人,我花了几个小时试图修复它。

**请注意,出于安全原因,我已更改了访问令牌,但我使用的令牌绝对有效**

2 个答案:

答案 0 :(得分:0)

看起来您使用的路径可能不正确。我可以看到那里有一个" 4"包含在列ID应该是的路径中。要更新列,您可以使用以下路径:

  

卷曲   https://api.smartsheet.com/2.0/sheets/ {sheetId} /列/ {ColumnID的}

您可以找到API参考here

答案 1 :(得分:0)

正如约瑟夫在回答中所说,您当然希望验证您在网址中为{columnId}指定的值是否有效。但是,您获得的错误可能与该问题无关。

可能发生的事情是,cURL会自动将Content-Type标头设置为值" application / x-www-form-urcoded" - 这不是此Smartsheet请求的有效内容类型。您只需在请求中自行设置Content-Type标头即可解决此错误(例如,将此-H "Content-Type: application/json"添加到请求中。)

例如,我要求更新列的选项列表选项,以便唯一的选项是" 31-OCT-2015"看起来像这样:

curl https://api.smartsheet.com/2.0/sheets/{sheetId}/columns/{columnId} -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -X PUT -d "{\"type\":\"PICKLIST\", \"options\":[\"31-OCT-2015\"]}" -k

请注意,要更新选项列表选项,我需要在JSON中设置的唯一属性是typeoptions。另请注意,我在JSON中使用(转义)双引号而不是单引号 - 您可能需要也可能不需要执行此操作(取决于您的平台)。