我正在使用 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?
您在帖子中包含的最终片段是在正确的轨道上,但只是还没有完全实现。我同意你的观点,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。)
端点旨在让您通过单个请求添加多行——这意味着请求正文应该是 Row
对象的数组(如我的请求中所示) 。从技术上讲,它会接受(没有错误)仅指定单个
Row
对象(不在数组中)的请求正文,因此您正在做的事情将会起作用。但如果您想通过单个 API 请求添加多行,则需要在请求正文中指定一组 Row
对象。