我在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
请求中没有意义。