I am trying to update some cells in an existing SmartSheet sheet with PHP. It's no problem to add new lines but I can't get the correct JSON for updating.
My code at this moment:
$ch = curl_init("https://api.smartsheet.com/1.1/sheet/1234567890/rows/");
$header = array("Authorization: Bearer xxxxxxxxxxx",
"Content-Type: application/json",
"Assume-User: xxxx%40xxxx.com");
$name = 'MyName';
$fields = '{"rowNumber":1, "columnId": 1234567890, "value": "'.$name.'", "displayValue": "'.$name.'"}';
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
This results in:
"{"errorCode":1008,"message":"Unable to parse request. The following error occurred: Unknown attribute \"columnId\" found at line 1, column 45"}"
I tried many options and can't figure this out with the API documentation and can't find any other PHP examples who do the same. Does somebody know how I can update just one specific cell in a row?
The Docs
The API documentation for updating a row can be found here. It gives the following example using curl from the command line:
What to Change in the PHP Example
We will need to change your PHP example to send the data following the above stated documentation. So, the following items from the php example will need to be changed:
[{"columnId": 13214124123213, "value": "my new text1"}, {"columnId": 1231231241238, "value": "my new text2"}]
The Solution
With that in mind we can change the code to the following:
Extra Information
You might wonder where the rowId and columnId came from. These two IDs need to be retrieved from the API by getting the sheet. This can be done using Curl, Advanced Rest Client for Chrome or via PHP. The PHP example is below:
This request will output something like the following and lists the columns id and rows id.