【问题标题】:Get all columns and attachments from Smartsheet API in PHP从 PHP 中的 Smartsheet API 获取所有列和附件
【发布时间】:2015-08-21 02:03:25
【问题描述】:

我正在研究 Smartsheet API,但我不是专业人士。 我需要一些帮助才能从一张特定的表格中获取所有信息。对于所有信息,我指的是所有列和它们的所有附件。我还需要帮助才能将附件下载到用户设备。有没有人在 PHP 中使用模板? 到目前为止,我已经从列中获取信息,但这还不够。

 $baseURL = "https://api.smartsheet.com/1.1";
$sheetsURL = $baseURL. "/sheets/";
$getSheetURL = $baseURL. "/sheet/xxx";
    $rowsURL = $baseURL. "/sheet/xxx/rows";
    $rowAttachmentsURL = $baseURL. "/sheet/3712544801089412/row/{{ROWID}}/attachments";
    $getAttachmentURL = $baseURL ."/sheet/3712544801089412/attachment/{{ATTACHMENTID}}";


    // Insert your Smartsheet API Token here
    $accessToken = "xxx"; 

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

            // Connect to Smartsheet API to get Selected Sheet
            $curlSession = curl_init($getSheetURL);

            curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);
            $getSheetResponseData = curl_exec($curlSession);
            $sheetObj = json_decode($getSheetResponseData);


            //attachment


                echo "<h1>Sheet name: ". $sheetObj->name ."</h1>";
                echo "<br>";
                //table start
                echo "<table>";
                echo "<td>"."Attachment"."</td>";
                foreach ($sheetObj->columns as $column) {
                    echo "<td>".$column->title ."</td>";
                    } 

                    echo "<tr>";
                    foreach ($sheetObj->rows as $row) {

                        $curlSession = curl_init($rowAttachmentsURL);
                        curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
                        curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);
                        $getAttachmentsResponse = curl_exec($curlSession);
                        // Assign response to variable 
                        $attachments = json_decode($getAttachmentsResponse);
                        $rowAttachmentsURL = str_replace('{{ROWID}}', $row->id, $rowAttachmentsURL);

                        var_dump($attachments);                             


                            foreach ($row->attachments as $attachment) {
                                echo "<td>".$attachment->name."</td>";
                                }    
                            foreach ($row->cells as $cell) 
                            {

                              echo "<td>".$cell->value."</td>";
                            }  

                            echo "<td></td><td></td><td></td>";
                            echo "</tr>"; 
                        }

                        echo "</table>";
                        curl_close($curlSession); 
                    ?>

【问题讨论】:

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


    【解决方案1】:

    GitHub 上有一个项目,它提供了使用 Smartsheet API 的 php 示例代码。听起来您希望获取工作表中的所有列,以及处理附件。

    要了解如何获取工作表的内容(包括列),我建议您使用 HelloGetSheet 示例。此示例获取选定的工作表,然后输出该工作表的列和行。

    在同一个项目中,还有sample code 用于处理附件。除了展示如何上传附件之外,此脚本还展示了如何从工作表中检索和下载附件。

    更新:感谢您发布代码。您看起来拥有完成所需的主要构建块。我建议将“列表行附件”部分移到行循环中。然后,对于到达行,您可以获取行 ID 并使用它来获取附件 URL,如下所示

    $rowAttachmentsURL = str_replace('{{ROWID}}', $row->id, $rowAttachmentsURL);
    

    【讨论】:

    • 我使用的代码是你提到的 GitHub 中的两个。我已经得到了列和行,但我无法将它们与附件文件中的代码结合起来。因此,如果您能给我一个如何将附件代码放入其他代码的示例,那就太好了,这样我就可以从智能表中获取所有信息。谢谢。
    • @user2979664 你能把你试过的代码贴出来,我们看看问题出在哪里?
    • 查看顶部的代码。我的计划是制作一个包含附件和其他信息的表格,就像 smartsheet 一样,然后在附件中有一个链接,这样就有机会将文件下载到任何设备上。我不需要添加新工作表、上传等所有东西。
    • @user2979664 感谢您发布代码。我会在我的答案中添加一些建议。同时,您需要撤销您发布的访问令牌,并生成一个新的。
    • 感谢您的帮助,但现在我收到此错误:errorCode":1004,"message":"您无权执行此操作。为什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多