无法使用 "level" 查询读取 objectValue 数据

Unable to read objectValue data using "level" query

根据 smartsheet API 文档,我应该能够在我的选项中使用 "level" 参数来获取多联系人列的复杂对象。 不幸的是,我在 return 中得到的只是 value 和 displayValue。

我是不是做错了什么?

var options = {
    id: SHEET_ID, //Id of sheet
    queryParameters = {
            include: ["objectValue"],
            level: 1
        }
}

ss.sheets.getSheet(options)
            .then(function (results) {
                console.log(results.rows[args[0]].cells[6])
            })

以上代码returns:

{ columnId: 8746190272522116, displayValue: 'John Smith, Danny Doe' }

我已经验证(使用 Postman)Smartsheet API 确实支持您描述的场景。即,如果我提交此 Get Sheet 请求:

https://api.smartsheet.com/2.0/sheets/5831916227192708?include=objectValue&level=1

...然后响应确实包含我的 sheet:

中多联系人单元格的复杂对象
{
    "id": 5831916227192708,
    ...
    "rows": [
        {
            "id": 5942480978372484,
            ...
            "cells": [
                {
                    "columnId": 3992195570132868,
                    "objectValue": {
                        "objectType": "MULTI_CONTACT",
                        "values": [
                            {
                                "objectType": "CONTACT",
                                "email": "john_doe@test.com",
                                "name": "John Doe"
                            },
                            {
                                "objectType": "CONTACT",
                                "email": "jane_doe@test.com",
                                "name": "Jane Doe"
                            }
                        ]
                    },
                    "displayValue": "John Doe, Jane Doe"
                },
                ...
            ]
        },
        ...
    ]
}

但是,Smartsheet JavaScript SDK 似乎还不支持这种情况。

SDK 更新稍微落后于新 API 功能的发布并不罕见。您可能会考虑在 JavaScript SDK repo 中记录一个问题以请求添加对此方案的支持——或者更好的是,向该 repo 提交一个 PR 以添加对该方案的支持。同时,您需要在集成中自行实现此功能(即,因为此时您不能依赖开箱即用的 SDK 功能来提供它)。

您只需从 options 定义中删除数组符号:

var options = {
    id: SHEET_ID, //Id of sheet
    queryParameters = {
            include: "objectValue",
            level: 1
        }
}

ss.sheets.getSheet(options)
            .then(function (results) {
                console.log(results.rows[args[0]].cells[6])
            })