Обновление ячеек в smartsheet
Я пытаюсь обновить некоторые ячейки в существующей таблице SmartSheet с помощью PHP. Нет проблем добавлять новые строки, но я не могу получить правильный JSON для обновления.
Мой код на данный момент:
$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);
Это приводит к:
"{"errorCode":1008,"message":"Unable to parse request. The following error occurred: Unknown attribute \"columnId\" found at line 1, column 45"}"
Я перепробовал много вариантов и не могу понять это с помощью документации API и не могу найти другие примеры PHP, которые делают то же самое. Кто-нибудь знает, как я могу обновить только одну конкретную ячейку подряд?
1 ответ
Документы
Документацию по API для обновления строки можно найти здесь. Это дает следующий пример с использованием curl из командной строки:
curl https://api.smartsheet.com/1.1/row/{rowId}/cells \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-X PUT \
-d '[ {"columnId": 3738748463671172, "value": "Revision 2"}, {"columnId": 5427598323935108, "value": "On Time", "strict": false} ]'
Что изменить в примере PHP
Нам потребуется изменить ваш пример PHP для отправки данных в соответствии с вышеуказанной документацией. Итак, необходимо изменить следующие элементы из примера php:
- URL-адрес должен быть в формате https://api.smartsheet.com/1.1/row/ averagerowI d‹/cells, где {rowI d} заменяется фактическим идентификатором строки.
- Нам нужно отправить массив ячеек. Например, следующее представляет собой массив из двух ячеек:
[{"columnId": 13214124123213, "value": "my new text1"}, {"columnId": 1231231241238, "value": "my new text2"}]
- Нам нужно отправить данные как запрос PUT.
Решение
Имея это в виду, мы можем изменить код на следующее:
<?php
$ch = curl_init("https://api.smartsheet.com/1.1/row/4407426335172484/cells");
$header = array("Authorization: Bearer 1238123lkjafasdilfasflkj",
"Content-Type: application/json",
"Assume-User: some%40email.com");
$name = 'MyName';
$fields = '[{"columnId": 4431344890603396, "value": "'.$name.'", "displayValue": "'.$name.'"}]';
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
$result = curl_exec($ch);
print_r($result);
?>
Дополнительная информация
Вы можете спросить, откуда пришли rowI d и columnI d. Эти два идентификатора необходимо получить из API, получив лист. Это можно сделать с помощью Curl, Advanced Rest Client для Chrome или через PHP. Пример PHP ниже:
<?php
$ch = curl_init("https://api.smartsheet.com/1.1/sheet/1837937135511428");
$header = array("Authorization: Bearer 123l1k2j321lkjasdfa",
"Content-Type: application/json",
"Assume-User: some%40email.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$result = curl_exec($ch);
print_r($result);
?>
Этот запрос выведет что-то вроде следующего и перечислит столбцы id и строки id.
{
"id":1837937135511428,
"name":"test",
"version":3,
"columns":[
{
"id":4431344890603396,
"index":0,
"title":"Primary Column",
"type":"TEXT_NUMBER",
"primary":true,
"width":150
},
{
"id":8934944517973892,
"index":1,
"title":"Column2",
"type":"TEXT_NUMBER",
"width":150
},
{
"id":138851495765892,
"index":2,
"title":"Column3",
"type":"TEXT_NUMBER",
"width":150
},
{
"id":4642451123136388,
"index":3,
"title":"Column4",
"type":"TEXT_NUMBER",
"width":150
},
{
"id":2390651309451140,
"index":4,
"title":"Column5",
"type":"TEXT_NUMBER",
"width":150
},
{
"id":6894250936821636,
"index":5,
"title":"Column6",
"type":"TEXT_NUMBER",
"width":150
}
],
"rows":[
{
"id":4407426335172484,
"rowNumber":1,
"cells":[
{
"columnId":4431344890603396,
"type":"TEXT_NUMBER",
"value":"My Name",
"displayValue":"My Name"
},
{
"columnId":8934944517973892,
"type":"TEXT_NUMBER",
"value":"test",
"displayValue":"test"
}
],
"expanded":true,
"createdAt":"2014-06-23T09:32:02-07:00",
"modifiedAt":"2014-06-23T09:48:55-07:00"
}
],
"accessLevel":"OWNER",
"ganttEnabled":false,
"dependenciesEnabled":false,
"permalink":"https://app.smartsheet.com/b/home?lx=v75AYzRUICSXF_2oV6V_LA",
"workspace":{
"id":6724185599829892,
"name":"Test"
},
"createdAt":"2014-06-23T09:28:58-07:00",
"modifiedAt":"2014-06-23T09:48:55-07:00"
}