1
>Cell newCell = new Cell();
>newCell.setValue("no way");
>newCell.setColumnId(4303755236665220l);
>       
> connection = (HttpURLConnection) new >URL("https://api.smartsheet.com/1.1/row/{row_id}/cells").openConnection();
>connection.setRequestMethod("PUT");
>connection.addRequestProperty("Authorization", "Bearer " + accessToken);
>connection.addRequestProperty("Content-Type", "application/json");
>connection.setDoOutput(true);
>           
>            
>mapper.writeValue(connection.getOutputStream(), newCell);
>mapper.readValue(connection.getInputStream(), new TypeReference<Result<Cell>>() {});
>               
>System.out.println("cell added.");

这是我将单元格添加到指定行的 Java 代码。

它返回一个错误:-

“无法解析请求。发生以下错误:请求正文必须是 JSON 对象或 JSON 数组。java.io.IOException:服务器返回 HTTP 响应代码:400 用于 URL:https ://api.smartsheet.com/1.1 /row/row_id/cells "

row_id 具有 Long 值。

任何人都可以帮忙吗?

4

1 回答 1

2

您似乎正在使用更新行单元格端点向单元格添加值。使用此端点时,Smartsheet API 期望请求正文为单元格数组,而不仅仅是单个单元格对象。

在您的情况下,您的请求正文如下所示:

{"columnId": 4303755236665220l, "value": "no way"}

当您想将该对象包装在这样的数组中时:

[{"columnId": 4303755236665220l, "value": "no way"} ]

您还可以使用Smartsheet Java SDK。使用 SDK,您只需要进行以下调用

 List<Cell> cells = new Cell.UpdateRowCellsBuilder().addCell(4303755236665220l, "no way").build();
 smartsheet.rows().updateCells({row_Id}, cells);

附带说明一下,此端点最近已被弃用,我们鼓励您使用Modify Row端点:PUT /sheet/{sheetId}/row/{rowId}

对于此端点,您的请求正文只会稍微修改,因为您的单元格数组将被包装在一个行对象中,如下所示:

{"cells":[{"columnId": 4303755236665220l, "value": "no way"}]}
于 2014-11-25T20:38:33.790 回答