如何向 Smartsheet 添加一个新行,其中包含下拉列表类型的列,并将多个选项设置为 true

问题描述 投票:0回答:1

我正在使用 SmartSheets API,更具体地说是文档中的“向工作表添加行”部分这里

我的问题是,我在创建一个单元格对象时遇到问题,该对象在工作表上显示时显示多个活动选项列表选项。

如上图所示,下拉列表列类型有 2 种不同的格式。

在顶部我们可以清楚地看到

test
test2
test3
被分为自己不同的选项。这是当您从智能表本身选择/输入选项时给出的格式。

下面是当我尝试使用文档中的 API 为下拉列表插入值时收到的结果。

据我所知,文档没有提及如何处理不同的列类型。我的代码如下所示,以获取底部(不正确)版本。 (注释表和列 ID 已删除)

function SendNewSmartSheetRow(SheetID){
    
        let RequestHeaders = new Headers()
        RequestHeaders.append("Authorization", `Bearer ${SmartSheetAuth}`)
        RequestHeaders.append("Content-Type", "application/json")

        let RequestBody = {
            toBottom: true,
            cells: [
                {
                    columnId: columnId,
                    values: "test test2 test3"
                }
            ],
        }

        let RequestInit = {
            method: "POST",
            headers: RequestHeaders,
            body: JSON.stringify(RequestBody)
        }
        let Request = fetch(`${SmartSheetBaseURL}/sheets/${SheetID}/rows`, RequestInit)
        .then((res)=>{return(res.json())})

        return(Request)

}
let a = await SendNewSmartSheetRow(SheetId)
console.log(a)

在上面的代码中,唯一感兴趣的部分实际上是创建

requestBody
。以下是我的原始版本,显然失败了。

let RequestBody = {
            toBottom: true,
            cells: [
                {
                    columnId: columnId,
                    values: "test test2 test3"
                }
            ],
        }

我还进行了一些谷歌搜索并尝试了几种不同的选择。这些选项感兴趣的是以下请求正文

let RequestBody = {
            toBottom: true,
            cells: [
                {
                    columnId: 8839694736379780,
                    values: "test test2 test3",
                    objectValue:{
                        objectType:"MULTI_PICKLIST",
                        multiPickList:{
                            values:["test","test2","test3"]
                        },
                    },
                }
            ],
        }

有趣的是,这提示了我响应错误

Required object attribute(s) are missing from your request: multiPickList.values[].
,但显然可以看到这一点,所以我尝试将其添加到基础
cell
对象而不是
objectValue
,并且遇到了相同的错误。

使用下拉列表列类型创建新行时,我该如何添加多个选项为 true?

javascript smartsheet-api smartsheet-api-2.0
1个回答
0
投票

您在帖子中包含的最终片段是在正确的轨道上,但只是还没有完全实现。我同意你的观点,Smartsheet API 文档中没有很好地记录这种情况。

以下代码片段显示了一个 API 请求,该请求向工作表添加一个新行,并使用 3 个值填充该新行中的一个单元格(多选项列表单元格):

test
test2
test3

POST https://api.smartsheet.com/2.0/sheets/2702602705784708/rows

[
    {
        "cells": [
            {
                "columnId": "8429111750905732", 
                "objectValue": {
                    "objectType": "MULTI_PICKLIST",
                    "values": ["test", "test2", "test3"]
                }
            }
            
        ]
    }
]

这是 Smartsheet 中该 API 请求的结果——这似乎是您正在寻找的结果:

最后,有几点注意事项:

  • 您无需在

    Add Row(s)
    请求中将
    isBottom
    属性设置为 true,因为如果不包含位置说明符属性,则将行添加到工作表底部是默认行为在“添加行”请求中。 (有关位置说明符属性的详细信息,请参阅 API 文档:https://smartsheet.redoc.ly/tag/rowsRelated/#section/Specify-Row-Location。

  • 您调用的
  • Add Row(s)

    端点旨在让您通过单个请求添加多行——这意味着请求正文应该是 Row 对象的数组(如我的请求中所示) 。从技术上讲,它会接受(没有错误)仅指定单个

    Row
    对象(不在数组中)的请求正文,因此您正在做的事情将会起作用。但如果您想通过单个 API 请求添加多行,则需要在请求正文中指定一组
    Row
    对象。
    
    

© www.soinside.com 2019 - 2024. All rights reserved.