使用 api sheet 冻结枢轴 table 内的列

Froze a column inside a pivot table with api sheet

您知道如何使用 FrozenColumnCount 属性(或另一个)在数据透视表 table 内冻结列吗?

request_body ={
        "requests" : {
            "updateCells" : {
                "rows" : {
                    "values" : [
                        {
                            "pivotTable" : {
                                #Data Source
                                "source" : {
                                    "sheetId": "0",
                                    "startRowIndex" : 0,
                                    "startColumnIndex" : 0,
                                },
                                #Row Field(s)
                                "rows" : [ 
                                    #field 2
                                    {
                                        "sourceColumnOffset" : 5, #Type Preneur
                                        "showTotals" : False,
                                        "sortOrder" : "ASCENDING"
                                    },
                                ],
                                #Columns Field(s)
                                "columns" : [
                                     #Field 2
                                    {
                                        "sourceColumnOffset" : 18, #Année
                                        "sortOrder" : "ASCENDING",
                                        "showTotals" : True
                                    }
                                ],
                                "criteria" : {
                                    6:{
                                        'visibleValues' : ['Solde Créditeur']
                                    },
                                }, 
                                "filterSpecs": [
                                    {
                                        "filterCriteria": {
                                            'visibleValues' : ['Solde Créditeur']
                                        },
                                        "columnOffsetIndex": 6
                                    }
                                ],                                    
                                #Values Field(s)
                                "values" : [
                                    {
                                        "sourceColumnOffset" : 21, #PNS BRUT PPSO
                                        "summarizeFunction" : "SUM",
                                        "name" : ""
                                    }
                                ],
                                "valueLayout" : "HORIZONTAL"
                            }
                        }
                    ]
                },
                "start": {
                    "sheetId" : id_new_sheet,
                    "rowIndex" : 0,
                    "columnIndex" : 0
                },
                'fields' : 'pivotTable'         
            }
        },
        "properties": {
            "gridProperpties" : {
            "frozenColumnCount": 1,
            }
        } 
    }

支点table 有效。我想冻结第一列。这是我收到的错误消息: 收到无效的 JSON 负载。未知名称“属性”:找不到字段。详细信息:“[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'description': 'Invalid JSON payload received. Unknown name "properties": Cannot find field.'}]} ]">.

修改点:

  • frozenColumnCount 用于 UpdateSheetPropertiesRequest 的 属性。我认为这就是您遇到问题的原因。
  • 属性 of requests 必须是数组。

当这些点反映到请求体中,就变成了下面这样

修改后的请求正文:

{
  "requests": [
    {
      "updateCells": {
        "rows": [
          {
            "values": [
              {
                "pivotTable": {
                  "source": {
                    "sheetId": 0,
                    "startRowIndex": 0,
                    "startColumnIndex": 0
                  },
                  "rows": [
                    {
                      "sourceColumnOffset": 5,
                      "showTotals": false,
                      "sortOrder": "ASCENDING"
                    }
                  ],
                  "columns": [
                    {
                      "sourceColumnOffset": 18,
                      "sortOrder": "ASCENDING",
                      "showTotals": true
                    }
                  ],
                  "criteria": {
                    "6": {
                      "visibleValues": [
                        "Solde Créditeur"
                      ]
                    }
                  },
                  "filterSpecs": [
                    {
                      "filterCriteria": {
                        "visibleValues": [
                          "Solde Créditeur"
                        ]
                      },
                      "columnOffsetIndex": 6
                    }
                  ],
                  "values": [
                    {
                      "sourceColumnOffset": 21,
                      "summarizeFunction": "SUM",
                      "name": ""
                    }
                  ],
                  "valueLayout": "HORIZONTAL"
                }
              }
            ]
          }
        ],
        "start": {
          "sheetId": id_new_sheet,
          "rowIndex": 0,
          "columnIndex": 0
        },
        "fields": "pivotTable"
      }
    },
    {
      "updateSheetProperties": {
        "properties": {
          "gridProperties": {
            "frozenColumnCount": 1
          },
          "sheetId": id_new_sheet
        },
        "fields": "gridProperties.frozenColumnCount"
      }
    }
  ]
}
  • 在此修改后的请求正文中,frozenColumnCount 设置为 sheet id_new_sheet。如果要更改sheet,请修改这里。

  • The pivot table works.开始,我没有修改updateCells的参数。

参考:

由于您已经在使用 batchUpdate 发出请求,因此实现您的目标的最简单方法是在同一呼叫中发出两个请求。为此,只需转换 requests 字段并使其成为包含您的两个请求的列表:updateCellsupdateSheetProperties。 您可以使用以下内容填充最后一个:

"updateSheetProperties": {
    "fields":"gridProperties.frozenColumnCount",
    "properties": {
        "sheetId":0, #A 0 if this is the first sheet
        "gridProperties":{"frozenColumnCount":1}
        }
    }

您可以详细了解这些请求的结构here