1

我正在开发一个 Drupal 模块,以便在发布特定类型的 Drupal 节点时创建一个 Smartsheet。

工作表创建得很好,但没有使用我用 formId 变量指定的模板。

我究竟做错了什么?

谢谢

代码是:

<?php

function smartsheet_node_insert($node) {
  if ($node->type == 'oa_space') {

    // Initialize URL Variables
    $baseURL = "https://api.smartsheet.com/1.1";
    $sheetsURL = $baseURL ."/sheets/";
    $columnURL = $baseURL. "/sheet/" . $node->nid . "/columns";

    // Insert your Smartsheet API Token here
    $accessToken = "[my api token]";

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


    // Create new sheet
    $theSheet = array(
      'name' => $node->title,
      'fromId' => '[template id]',
    );

    $postfields = json_encode($theSheet);

    // Connect to Smartsheet API
    $curlSession = curl_init($sheetsURL);
    curl_setopt($curlSession, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curlSession, CURLOPT_POST, 1);
    curl_setopt($curlSession, CURLOPT_POSTFIELDS, $postfields);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, TRUE);

    $createResponse = curl_exec($curlSession);

    // Assign response to PHP object
    $createObj = json_decode($createResponse);

    if (curl_getinfo($curlSession, CURLINFO_HTTP_CODE) != 200) {

    //if (curl_errno($curlSession)) {
        drupal_set_message("Oh No! Could not create sheet " . $node->title . "because " . $createObj->message);
    } else {
        // Tell the user!
        drupal_set_message("A Smartsheet has been created for the " . $node->title . " project");

        // close curlSession
        curl_close($curlSession);
    }
  }
}
4

2 回答 2

2

你的代码看起来不错。如果正在创建工作表,那么您的调用结构是好的。您可能只是有一个不正确的 templateId。你从哪里得到模板ID?

通过 Smartsheet 界面,您可以在Sheet Properties中找到模板 Id 。Smartsheet 帮助部分的这篇文章描述了在哪里可以找到工作表属性。在属性窗口中,您将获取工作表 ID 的值,并将其用于fromId创建工作表调用中的值。

于 2014-07-07T16:32:05.283 回答
0

@stmcallister。确切地。复制工作表结构,但不复制内容。

模板 ID = 2774566423553924,最新工作表 ID = 8533387423049604。

谢谢,

格伦

于 2014-07-28T04:35:24.907 回答