Обновление ячеек в smartsheet (java)

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.

Может ли кто-нибудь помочь?

Теги:
smartsheet-api
cells

1 ответ

2
Лучший ответ

Похоже, вы используете конечную точку Update Row Cells для добавления значений в свои ячейки. При использовании этой конечной точки API-интерфейс Smartsheet ожидает, что тело запроса будет представлять собой массив ячеек, а не только один объект ячейки.

В вашем случае ваше тело запроса выглядит так:

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

Если вы хотите обернуть этот объект в массив, как это:

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

Вы также можете использовать SDK Smartsheet Java. Используя 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"}]}
  • 0
    Большое спасибо. Это сработало!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню