【问题标题】:Froze a column inside a pivot table with api sheet使用 api 表冻结数据透视表内的列
【发布时间】:2022-01-13 00:11:39
【问题描述】:

您知道如何在数据透视表中使用 FrozenColumnCount 属性(或其他属性)冻结列吗?

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,
            }
        } 
    }

数据透视表有效。我想冻结第一列。这是我收到的错误消息: 收到无效的 JSON 负载。未知名称“属性”:找不到字段。”。详细信息:“[{'@type':'type.googleapis.com/google.rpc.BadRequest','fieldViolations':[{'description':'无效的 JSON 负载已收到。未知名称“属性”:找不到字段。'}]}]">。

【问题讨论】:

    标签: google-sheets google-api pivot-table google-sheets-api


    【解决方案1】:

    修改点:

    • frozenColumnCount 是 UpdateSheetPropertiesRequest 的财产。我认为这是您的问题的原因。
    • 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 设置为工作表 id_new_sheet。如果您想更改工作表,请修改此项。

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

    参考:

    【讨论】:

      【解决方案2】:

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

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

      您可以阅读更多关于这些请求的结构here。

      【讨论】:

        猜你喜欢
        • 2021-03-24
        • 2018-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-05
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        相关资源
        最近更新 更多