更新智能表中的单元格

时间:2014-06-23 12:13:15

标签: php smartsheet-api smartsheet-api-1.1

我正在尝试使用PHP更新现有SmartSheet表中的某些单元格。添加新行没有问题,但我无法获得正确的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 个答案:

答案 0 :(得分:3)

文件

可以找到用于更新行的API文档here。它使用命令行中的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示例中的以下项目:

  1. 网址必须采用https://api.smartsheet.com/1.1/row/{rowId}/cells格式,其中{rowId}将替换为实际的行ID。
  2. 我们需要发送一组单元格。例如,以下是两个单元格的数组:[{"columnId": 13214124123213, "value": "my new text1"}, {"columnId": 1231231241238, "value": "my new text2"}]
  3. 我们需要将数据作为PUT请求发送。
  4. 解决方案

    考虑到这一点,我们可以将代码更改为以下内容:

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

    额外信息

    你可能想知道rowId和columnId来自哪里。需要通过获取工作表从API检索这两个ID。这可以使用Curl,Advanced Rest Client for 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"
    }