Обновите Cell SmartSheet 2.0 с помощью PHP-скрипта

Я нашел этот фрагмент кода для обновления ячейки на сайте SmartSheet. Но я не понимаю, каковы значения в переменной поля. У кого-нибудь есть рабочий пример кода PHP для этого?

curl https://api.smartsheet.com/2.0/sheets/{sheetId}/rows?include=objectValue \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-X PUT \
-d '[{"id": "6572427401553796", "cells": [{"columnId": 7518312134403972,"objectValue": {"objectType": "PREDECESSOR_LIST","predecessors": [{"rowId": 567735454328708,"type": "FS","lag": {"objectType": "DURATION","days": 2,"hours": 4}}]}}]}]'

Мой текущий php-код выглядит следующим образом, и я просто хочу обновить какое-то значение на листе. Я не знаю, что добавить в поле varaible. Благодарю.

<?php

$baseURL = "https://api.smartsheet.com/2.0";
$getSheetURL = $baseURL. "/sheets/4925037959505xxx/rows?include=objectValue";
$accessToken = "34ouqtkxp0sutdv6tjbwtsxxxx"; 

$headers = array("Authorization: Bearer ". $accessToken ,  "Content-Type: application/json");


$fields='[????]';

$ch = curl_init($getSheetURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS,  $fields);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
$result = curl_exec($ch);
print_r($result);
?>

Спасибо

2 ответа

Это функция, которую я создал для обновления SmartSheet

  • $ ssID: идентификатор смарт-листа
  • $ ssRowID: идентификатор строки Smart Sheet, которую я хочу обновить
  • $ values: массив значений столбцов
  • $ columArray: массив идентификаторов столбцов
  • $ config: массив, который я использую для хранения всей информации об аутентификации

Разбивка данных Json - способ передачи столбцов, которые вы хотите обновить, и значений

  • {"id": "'. $ ssRowID.'",

    • "клетка":

    • [

    • {"columnId": '. $ columnArray [' go '].', "value": "'. $ values ​​['go'].'"}},
    • {"columnId": '. $ columnArray [' comments '].', "value": "'. $ values ​​[' comment '].'"},
    • {"columnId": '. $ columnArray [' data center '].', "value": "'. $ values ​​['datacenter'].'"}}
    • ]
  • }

  • ID представляет строку, которую вы хотите обновить

  • ColumnID представляет каждый столбец, который вы хотите обновить, должен предоставить идентификатор столбца, а значение представляет значение, которое вы хотите вставить

{"columnId": "идентификатор вашего столбца здесь", "значение": "ваше значение здесь"}

function ssUpdate($ssID, $ssRowID, $values, $columnArray, $config){


    /*
    *   update the Smart Sheet using the passed in sheet ID, Row ID and VALUES
    *   
    */

    $sheetID = $ssID; 
    $SSAPIToken = $config['smartsheets']['SSAPIToken'];
    $sheetsURL = "https://api.smartsheet.com/2.0/sheets/".$sheetID."/rows";
    $data_json = '[{"id": "'.$ssRowID.'", "cells": [{"columnId": '.$columnArray['go'].',"value": "'.$values['go'].'"}, {"columnId": '.$columnArray['comments'].',"value": "'.$values['comment'].'"}, {"columnId": '.$columnArray['data center'].',"value": "'.$values['datacenter'].'"}]}]';

    //echo $data_json."<br />";

    // Create Headers Array for Curl
    $headers = array(
        "Authorization: Bearer " .$SSAPIToken,
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_json)
    );

    /*
    *   connect to SS and update Sheet
    */

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$sheetsURL ); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
    curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);

    $data = curl_exec($ch); 
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    $information = curl_getinfo($ch);

    curl_close($ch);

    $ssArray = json_decode ($data, true); // make an XML object

    /*
    *   did connection work
    */

    if ($status_code != 200) {
        echo "Oh No! Update Error: (". $ssArray['errorCode'] .") ". $ssArray['message'] ."\n";
    } else {

        //var_dump($ssArray);

        if ($ssArray['resultCode'] == 0){
            echo "Updated: ".$values['store'];
        }else{
            echo "Oh No! Update Error: (". $ssArray['errorCode'] .") ". $ssArray['message'] ."\n";
        }   

    }

}

Более подробная информация: http://smartsheet-platform.github.io/api-docs/

$fields полезная нагрузка JSON для запроса PUT. Подробности документированы здесь: http://smartsheet-platform.github.io/api-docs/

Я предлагаю вам проверить с помощью Postman или Advanced Rest Client, прежде чем вы начнете кодировать.

Также, include=objectValue имеет смысл только для GET так что нет смысла включать это для PUT запрос.

Другие вопросы по тегам