小能豆

使用 updateCells API 请求更新多个单元格的格式

py

我正在尝试将一系列单元格居中对齐,但只有该范围内的第一个单元格使用指定的格式进行更新。

这是我的代码:

align = 'CENTER'
data={
      "requests": [
        {
          "updateCells": {
            "rows": [
              {
                "values": [
                  {
                    "userEnteredFormat": {
                      "horizontalAlignment": align,
                      "textFormat":  { 
                        "fontFamily": fontFamily,
                        "fontSize":  fontSize
                      }
                    }
                  }
                ]
              }
            ],
            "range": {
              "sheetId": sheetId,
              "startRowIndex": startRowIndex,
              "endRowIndex": endRowIndex,
              "startColumnIndex": startColumnIndex,
              "endColumnIndex": endColumnIndex
            },
            "fields": "userEnteredFormat"
          }
        }
      ]
    }

如果我记录这些值 - 即print (startRowIndex, endRowIndex, startColumnIndex, endColumnIndex)- 它们是正确的(例如0 1 27 30),但只有第一个单元格会更新为格式 - 而不是整个范围。

这是怎么回事?如何将指定的格式应用于整个范围?


阅读 5

收藏
2025-01-14

共1个答案

小能豆

您想要更新“AB1:AD1”({startRowIndex: 0, endRowIndex: 1, startColumnIndex: 27, endColumnIndex: 30})。如果我的理解正确,那么这个修改怎么样?

修改点:

  • 当 3 列更新时,值也需要更新。 在您的例子中,您想要更新 3 列。 因此需要创建类似{values: [{userEnteredFormat: ###}, {userEnteredFormat: ###}, {userEnteredFormat: ###}]}

修改后的请求:

{
  "requests": 
  [
    {
      "updateCells": 
      {
        "rows": 
        [
          {
            "values": 
            [
              {
                "userEnteredFormat": 
                {
                  "horizontalAlignment": align ,   #'CENTER','LEFT','RIGHT',
                  "textFormat": 
                  {
                    "fontFamily": fontFamily,
                    "fontSize": fontSize
                  }
                }
              },
              {
                "userEnteredFormat": 
                {
                  "horizontalAlignment": align ,   #'CENTER','LEFT','RIGHT',
                  "textFormat": 
                  {
                    "fontFamily": fontFamily,
                    "fontSize": fontSize
                  }
                }
              },
              {
                "userEnteredFormat": 
                {
                  "horizontalAlignment": align ,   #'CENTER','LEFT','RIGHT',
                  "textFormat": 
                  {
                    "fontFamily": fontFamily,
                    "fontSize": fontSize
                  }
                }
              }
            ]
          }
        ],
        "range": 
        {
          "sheetId": sheetId,
          "startRowIndex": startRowIndex,
          "endRowIndex": endRowIndex,
          "startColumnIndex": startColumnIndex,
          "endColumnIndex": endColumnIndex
        },
        "fields": "userEnteredFormat",
      }
    }
  ]
}

如果我误解了你的问题,请告诉我。我想修改它。

编辑 :

当您想要反映大量单元格的格式时,可以使用repeatCell。请求主体如下。在此示例中,修改了范围内的所有单元格。

修改后的请求:

{
  "requests": 
  [
    {
      "repeatCell": 
      {
        "cell": 
        {
          "userEnteredFormat": 
          {
            "horizontalAlignment": align ,   #'CENTER','LEFT','RIGHT',
            "textFormat":
             {
               "fontFamily": fontFamily,
               "fontSize": fontSize
             }
          }
        },
        "range": 
        {
          "sheetId": sheetId,
          "startRowIndex": startRowIndex,
          "endRowIndex": endRowIndex,
          "startColumnIndex": startColumnIndex,
          "endColumnIndex": endColumnIndex
        },
        "fields": "userEnteredFormat"
      }
    }
  ]
}
2025-01-14