使用 Google 张折叠组 API
Collapsing a group using Google Sheets API
因此作为 difficulties creating a new sheet with groups I am trying to create and collapse these groups in a separate call to batchUpdate 的解决方法。我可以成功调用 addDimensionGroup
请求,但是当我请求 updateDimensionGroup
折叠我刚刚创建的组时,无论是在同一个 API 调用中还是在单独的调用中,我都会收到此错误:
{
"error": {
"code": 400,
"message": "Invalid requests[1].updateDimensionGroup: dimensionGroup.depth must be \u003e 0",
"status": "INVALID_ARGUMENT"
}
}
但是我将深度传递为 0,正如我在请求中发送的以下 JSON 所示:
{
"requests":[{
"addDimensionGroup":{
"range":{
"dimension":"ROWS",
"sheetId":0,
"startIndex":2,
"endIndex":5}
}
},{
"updateDimensionGroup":{
"dimensionGroup":{
"range": {
"dimension":"ROWS",
"sheetId":0,
"startIndex":2,
"endIndex":5
},
"depth":0,
"collapsed":true
},
"fields":"*"
}
}],
"includeSpreadsheetInResponse":true}',
...
我不完全确定我应该为 "fields" 提供什么,UpdateDimensionGroupRequest says it is supposed to be a string ("string ( FieldMask format)"), but the FieldMask definition itself 的文档显示了多路径的可能性,但没有告诉我它们应该如何提供分隔成一个字符串。
我做错了什么?
错误信息实际上是告诉你 dimensionGroup.depth
值必须是 > 0
:
如果您在 sheet 上调用 spreadsheets.get()
,并且仅请求 DimensionGroup
数据,您会注意到您创建的组实际上处于深度 1
:
GET https://sheets.googleapis.com/v4/spreadsheets/{SSID}?fields=sheets(rowGroups)&key={API_KEY}
这是有道理的,因为深度是(根据 API 规格):
depth number
The depth of the group, representing how many groups have a range that wholly contains the range of this group.
请注意,根据定义.
,任何特定的 DimensionGroup
"wholly contains its own range"
如果您的目标是更改 DimensionGroup
的状态,那么您需要设置其 collapsed
属性:
{
"requests":
[
{
"updateDimensionGroup":
{
"dimensionGroup":
{
"range":
{
"sheetId": <your sheet id>,
"dimension": "ROWS",
"startIndex": 2,
"endIndex": 5
},
"collapsed": true,
"depth": 1
},
"fields": "collapsed"
}
}
]
}
对于这个特定的 Request
,您可以设置的唯一属性是 collapsed
- 其他属性用于标识要操作的所需 DimensionGroup
。因此,指定 fields: "*"
等同于 fields: "collapsed"
。对于大多数请求而言,情况并非如此,因此指定 fields: "*"
然后省略非必需的请求参数会被解释为 "Delete that missing parameter from the server's representation".
要更改 DimensionGroup
的 depth
,您必须添加或删除包含它的其他 DimensionGroup
。
因此作为 difficulties creating a new sheet with groups I am trying to create and collapse these groups in a separate call to batchUpdate 的解决方法。我可以成功调用 addDimensionGroup
请求,但是当我请求 updateDimensionGroup
折叠我刚刚创建的组时,无论是在同一个 API 调用中还是在单独的调用中,我都会收到此错误:
{
"error": {
"code": 400,
"message": "Invalid requests[1].updateDimensionGroup: dimensionGroup.depth must be \u003e 0",
"status": "INVALID_ARGUMENT"
}
}
但是我将深度传递为 0,正如我在请求中发送的以下 JSON 所示:
{
"requests":[{
"addDimensionGroup":{
"range":{
"dimension":"ROWS",
"sheetId":0,
"startIndex":2,
"endIndex":5}
}
},{
"updateDimensionGroup":{
"dimensionGroup":{
"range": {
"dimension":"ROWS",
"sheetId":0,
"startIndex":2,
"endIndex":5
},
"depth":0,
"collapsed":true
},
"fields":"*"
}
}],
"includeSpreadsheetInResponse":true}',
...
我不完全确定我应该为 "fields" 提供什么,UpdateDimensionGroupRequest says it is supposed to be a string ("string ( FieldMask format)"), but the FieldMask definition itself 的文档显示了多路径的可能性,但没有告诉我它们应该如何提供分隔成一个字符串。
我做错了什么?
错误信息实际上是告诉你 dimensionGroup.depth
值必须是 > 0
:
如果您在 sheet 上调用 spreadsheets.get()
,并且仅请求 DimensionGroup
数据,您会注意到您创建的组实际上处于深度 1
:
GET https://sheets.googleapis.com/v4/spreadsheets/{SSID}?fields=sheets(rowGroups)&key={API_KEY}
这是有道理的,因为深度是(根据 API 规格):
depth number
The depth of the group, representing how many groups have a range that wholly contains the range of this group.
请注意,根据定义.
,任何特定的DimensionGroup
"wholly contains its own range"
如果您的目标是更改 DimensionGroup
的状态,那么您需要设置其 collapsed
属性:
{
"requests":
[
{
"updateDimensionGroup":
{
"dimensionGroup":
{
"range":
{
"sheetId": <your sheet id>,
"dimension": "ROWS",
"startIndex": 2,
"endIndex": 5
},
"collapsed": true,
"depth": 1
},
"fields": "collapsed"
}
}
]
}
对于这个特定的 Request
,您可以设置的唯一属性是 collapsed
- 其他属性用于标识要操作的所需 DimensionGroup
。因此,指定 fields: "*"
等同于 fields: "collapsed"
。对于大多数请求而言,情况并非如此,因此指定 fields: "*"
然后省略非必需的请求参数会被解释为 "Delete that missing parameter from the server's representation".
要更改 DimensionGroup
的 depth
,您必须添加或删除包含它的其他 DimensionGroup
。