Node.js Smartsheet 的查询参数 API

Node.js Query Parameters for Smartsheet API

我正在尝试使用 Node.js SDK 通过 get-sheet 请求 smartsheet.sheets.getSheet(options) 发送 include 参数。 API 文档对如何在 API 调用中添加 include 参数含糊不清。

我找到了一个 Smartsheet 开发者博客 post Demystifying Query Parameters in the Smartsheet API,它提供了更多指导,但是他们提供的 Node.js 示例代码无效 javascript:

// Set options
var options = {
    queryParameters: {
    include: "attachments",
    include: "source",
    includeAll: true
    }
};

// List sheets
smartsheet.sheets.listSheets(options)
    .then(function(response) {

    ... 

在上面的代码中,最后一个 include 查询参数将覆盖所有先前的值,您将留下一个 options 变量,该变量丢失了 "attachements" 参数:

  queryParameters: {
    include: "source",
    includeAll: true
  }

对我来说,显而易见的解决方案是 include 采用如下数组:

    include: ["attachments", "source"],

有什么建议吗?

在使用 SDK 之外,include 查询字符串所需的任何值都作为逗号分隔列表添加到 URL。 SDK 将采用您为 queryParameters 对象的 include 参数提供的值并将其添加为 include 查询字符串的值并将其附加到 URL。 与其在 queryParameters 对象中多次提供 include 参数或提供一个数组,不如为 include 提供单个 string 值以及您希望使用的所有选项逗号分隔。
例如,要求包含 source 信息和 attachmentsGET Sheet 请求如下所示:

const options = {
    id:<SHEET_ID>,
    queryParameters : {
        include: 'source,attachments',
        includeAll: true
    }
}

smartsheet.sheets.getSheet(options)
.then(sheet => {
    console.log(sheet);
})
.catch(err => {
    console.log(err);
})

请注意,includeAll 查询字符串适用于 pagination,可以单独使用以使 sheet 的所有行都包含在响应中。
此外,如果您在控制台中 运行 测试请求并在使用访问令牌创建 Smartsheet 客户端时设置 logLevel: 'info',您可以看到 URL 用于请求在 sheet 数据响应上方打印出来,它将向您展示 URL 的结构。