从Drupal模块创建工作表

时间:2014-07-06 10:16:17

标签: drupal-7 smartsheet-api smartsheet-api-1.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);
    }
  }
}

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

@stmcallister。究竟。已复制工作表结构,但不复制内容。

模板ID = 2774566423553924,最新表格ID = 8533387423049604。

谢谢,

格伦