首页 > 解决方案 > Python + 工作表 | 我可以知道使用 BatchUpdate 更改 BGcolor 的语法吗?

问题描述

以下 python 代码是一个 BatchUpdate:

  1. 将数字“x”添加到行的 H 列
  2. 将整行更改为绿色

可能涉及 1 行或多行。如何更改背景颜色?另外,如果 rowListTH[] 只有 1 项,这段代码还能用吗?

ssName = ssTH.title + '!'
request_body = {
    "valueInputOption": "RAW",
    "data": [
        {
            'range': ssName + 'H'+rowListTH[-1]+':H'+rowListTH[0],
            'values': [
                {
                    [str(x)],
                    "backgroundColor": {"green": 1}
                }
                ]
        },
    ]
}
service.spreadsheets().values().batchUpdate(
    spreadsheetId = ssID,
    body = request_body
).execute()

==================================== 编辑=============== ====================

我已经进行了更改,但我无法获得为整个行或列着色的更新,它总是只会为单个单元格着色。请检查我在哪里做错了

我想为第 5-12 行 A 到 I 列着色。对于我的结果,我只让单元格 A5 着色。

request_body = {
"updateCells":{
    "rows":[
        {
            "values":[
                {
                    "userEnteredFormat":{
                        "backgroundColor":{
                            "red": 0,
                            "green": 1,
                            "blue": 0,
                            "alpha": 1
                        }
                    }
                }
            ]
        }
            ],
            "fields":"userEnteredFormat.backgroundColor",
            "range":{
                "sheetId": TH_gid,
                "startRowIndex": 4,
                "endRowIndex": 11,
                "startColumnIndex": 0,
                "endColumnIndex": 9
            }
        }
    }
body = {
    "requests": request_body
}
response = service.spreadsheets().batchUpdate(spreadsheetId=ssID, body=body).execute()

BG颜色

标签: pythongoogle-sheets-apibackground-colorbatch-updates

解决方案


回答:

要更改单元格的背景颜色,您需要使用spreadsheets.batchUpdate端点,而不是spreadsheets.values.batchUpdate端点。

示例请求:

request_body = {
    "updateCells":{
        "rows":[
            {
                "values":[
                    {
                        "userEnteredFormat":{
                            "backgroundColor":{
                                "red": 0,
                                "green": 1,
                                "blue": 0,
                                "alpha": 1
                            }
                        }
                    }
                ]
            }
        ],
        "fields":"userEnteredFormat.backgroundColor",
        "range":{
            "sheetId": sheet-id,
            "startRowIndex": 0,
            "endRowIndex": 0,
            "startColumnIndex": 0,
            "endColumnIndex": 1
        }
    }
}

body = {
    "requests": request_body
}

response = service.spreadsheets().batchUpdate(spreadsheetId=ss.id, body=body).execute()

您需要更改的内容:

  • redgreenbluealpha。_ 根据文档,这些是 RGB 颜色空间的 0 和 1 之间的浮点表示,分母为 255。
    • 例如,对于白色,#FFFFFF或者您将使用和中255 255 255的每一个。redgreenblue
  • 工作表 ID - 这不是电子表格 ID,这是#gid您在浏览器中查看电子表格时在 URL 中看到的 ID。Sheet1默认为 always 0,但任何添加的工作表都是随机的。这个值是一个整数。
  • 开始和结束列和行:
    • startRowIndex, endRowIndex,startColumnIndexendColumnIndex是 0 索引的。这意味着如果您只想为 cell 着色A1,那么您的请求将是:
"startRowIndex": 0,
"endRowIndex": 1,
"startColumnIndex": 0,
"endColumnIndex": 1

要为整列着色,您首先需要找出行数并提出以下请求(假设 A 列):

"startRowIndex": 0,
"endRowIndex": number_of_rows - 1,
"startColumnIndex": 0,
"endColumnIndex": 1

由于这与您使用的端点不同,因此需要将其作为单独的 HTTP 请求进行。

参考:


推荐阅读