使用Google Sheets API折叠组

时间:2018-07-13 00:36:05

标签: google-sheets-api

因此,作为对difficulties creating a new sheet with groups的解决方法,我试图在对batchUpdate的单独调用中创建和折叠这些组。我可以成功调用请求addDimensionGroup,但是当我请求updateDimensionGroup折叠我刚刚创建的组时,无论是在同一API调用中还是在单独的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}',
   ...

我不确定我应该为“字段”提供什么,UpdateDimensionGroupRequest的文档说应该是字符串(“ string(FieldMask格式)”),但是{{ 3}}显示了多个路径的可能性,但没有告诉我应该如何将它们分隔为单个字符串。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:1)

错误消息实际上是在指示您dimensionGroup.depth的值必须为> 0

enter image description here

如果您在工作表上调用spreadsheets.get(),并且仅请求DimensionGroup数据,您会注意到创建的组实际上位于深度1

GET https://sheets.googleapis.com/v4/spreadsheets/{SSID}?fields=sheets(rowGroups)&key={API_KEY}

enter image description here

这很有意义,因为深度是(根据API规范):

  

深度 编号
组的深度,表示有多少组的范围完全包含此组的范围。

请注意,根据定义,任何给定的特定DimensionGroup“都包含其自己的范围” 。

如果您的目标是更改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: "*"然后省略不需要的请求参数将被解释为“从服务器的表示中删除缺少的参数”。

要更改DimensionGroup的{​​{1}},必须添加或删除包含它的其他depth