【问题标题】:Update format of more than one cell with updateCells API request使用 updateCells API 请求更新多个单元格的格式
【发布时间】:2018-06-16 04:49:11
【问题描述】:

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

这是我的代码:

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),但只有第一个单元格更新为格式 - 而不是整个范围。

这里发生了什么?如何将指定的格式应用于整个范围?

【问题讨论】:

    标签: python google-sheets-api google-api-python-client


    【解决方案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"
          }
        }
      ]
    }
    

    参考:

    【讨论】:

    • 真的吗?那不可能。如果我想一次更新 1000 个相同格式的单元格怎么办?我必须输入 1000 个这些值吗?那不可能。那么“范围”的意义何在?
    • @jason 真的很抱歉我没注意到你想使用这种情况。所以我更新了我的答案。你能确认一下吗?
    • 日本人非常乐于助人和尊重人...我记得降落在东京时,一名官员检查了我的行李...他把所有东西都拿出来了,但是当他把所有东西放回去时,他打包的比我是怎么打包的。我同时感到震惊、谦卑和荣幸。
    • 谢谢田池。有效。我不确定为什么有人会想要使用updateCells 而不是repeatCell ... 对于单个单元格,我可以使用repeatCell 并使用AB1:AB1 的范围。
    • @jason 我很荣幸。我很高兴你的问题得到了解决。我可以从你的问题中学习。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多