使用PHP脚本更新Cell SmartSheet 2.0



我在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代码如下,我只想在工作表中更新一些值。我不知道该把什么放在可变的领域里。谢谢

<?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);
?>

感谢

这是我创建的一个函数,用于更新SmartSheet

  • $ssID:是智能工作表ID
  • $ssRowID:是智能工作表的行id I想要更新
  • $values:是列值的数组
  • $columnArray:是列ID的数组
  • $config:是我用来容纳所有身份验证信息

分解Json数据,这是您沟通要更新的列和值的方式

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

    • "细胞":

    • [

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

  • ID表示要更新的行

  • ColumnID表示要更新的每一列。必须提供列ID,值表示要插入的值

{"columnId":"此处为您的列id","value":"在此为您的值"}

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/#add-第s列

$fields是PUT请求的JSON有效负载。详细信息记录如下:http://smartsheet-platform.github.io/api-docs/#update-第s列

我建议您在开始编码之前使用Postman或Advanced Rest Client进行测试。

此外,include=objectValue仅对GET有意义,因此将其包括在PUT请求中没有意义。