Обновление ячеек в smartsheet (java)
>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.
Кто-нибудь может помочь?
1 ответ
Похоже, вы используете конечную точку ячеек обновления строки для добавления значений в ваши ячейки. При использовании этой конечной точки API Smartsheet ожидает тело запроса в виде массива ячеек, а не только одного объекта ячейки.
В вашем случае ваше тело запроса выглядит так:
{"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"}]}