python - Python + 工作表 | 我可以知道使用 BatchUpdate 更改 BGcolor 的语法吗?
问题描述
以下 python 代码是一个 BatchUpdate:
- 将数字“x”添加到行的 H 列
- 将整行更改为绿色
可能涉及 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()
解决方案
回答:
要更改单元格的背景颜色,您需要使用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()
您需要更改的内容:
red
、green
和blue
值alpha
。_ 根据文档,这些是 RGB 颜色空间的 0 和 1 之间的浮点表示,分母为 255。- 例如,对于白色,
#FFFFFF
或者您将使用和中255 255 255
的每一个。red
green
blue
- 例如,对于白色,
- 工作表 ID - 这不是电子表格 ID,这是
#gid
您在浏览器中查看电子表格时在 URL 中看到的 ID。Sheet1
默认为 always0
,但任何添加的工作表都是随机的。这个值是一个整数。 - 开始和结束列和行:
startRowIndex
,endRowIndex
,startColumnIndex
和endColumnIndex
是 0 索引的。这意味着如果您只想为 cell 着色A1
,那么您的请求将是:
"startRowIndex": 0,
"endRowIndex": 1,
"startColumnIndex": 0,
"endColumnIndex": 1
要为整列着色,您首先需要找出行数并提出以下请求(假设 A 列):
"startRowIndex": 0,
"endRowIndex": number_of_rows - 1,
"startColumnIndex": 0,
"endColumnIndex": 1
由于这与您使用的端点不同,因此需要将其作为单独的 HTTP 请求进行。
参考:
推荐阅读
- scala - 在 scala.spark 数据框中使用 .withcolumn 填充“Grouper”列
- python - 在 Python 中,Grouper 和轴的长度必须相同
- javascript - 我怎样才能重置一个
- android - Android - 取消来自其他应用的通知
- wordpress - Angular 6 http 不适用于单个 JSON 项
- vba - my vba "object" wont move according to my code
- matlab - 如何在不使用循环的情况下仅递减矩阵的非零元素?
- php - PHP会话文件没有被清理?
- ios - SKSpriteKit:如何检测自定义 SKSpiteNode“按钮”的“触摸开始”
- ios - 减小 OpenSSL 二进制文件的大小?