我正在寻找一种方法,只使用带有python的Google表格API删除单元格范围选择而不是其内容的格式化。
目前,我唯一的解决方案是应用与普通格式相同的逻辑并将样式设置为NONE。例如,当我将边框格式设置为特定范围时,我使用:
request_dict = {'requests': [{
"updateBorders": {
"range": {
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": raws,
"startColumnIndex": first_col,
"endColumnIndex": last_col},
"top": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}},
"bottom": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}},
"left": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}},
"right": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}},
"innerHorizontal": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}},
"innerVertical": {
"style": "SOLID_MEDIUM",
"width": 1,
"color": {"blue": 0}}}}]}
body = {'requests': request_dict['requests']}
service.spreadsheets().batchUpdate(spreadsheetId=spreadsheetId,
body=body).execute()
如果我想删除它,我会替换"样式"字段为' NONE'就像这样:
request_dict = {'requests': [{
"updateBorders": {
"range": {
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": raws,
"startColumnIndex": first_col,
"endColumnIndex": last_col},
"top": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}},
"bottom": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}},
"left": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}},
"right": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}},
"innerHorizontal": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}},
"innerVertical": {
"style": "NONE",
"width": 1,
"color": {"blue": 0}}}}]}
body = {'requests': request_dict['requests']}
service.spreadsheets().batchUpdate(spreadsheetId=spreadsheetId,
body=body).execute()
但这意味着我需要定义一个函数来擦除我定义的每种格式的格式,这不是很实用...... 第一步是找到一种方法来擦除整张纸上的格式,也许之后可以在我的纸张中为特定范围进行格式化。
答案 0 :(得分:2)
This documentation似乎表示,如果您在fields
请求中将"userEnteredValue"
设置为updateCells
,则会删除所有格式。我还没有测试过这个,但是你去了:
request_dict = {
"requests": [{
"updateCells": {
"range": {
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": raws,
"startColumnIndex": first_col,
"endColumnIndex": last_col
},
"fields": "userEnteredValue"
}
}]
}
答案 1 :(得分:1)
有相同的问题,并已解决。另一个答案很接近,但对于任何偶然发现此问题的人而言。在api samples中,它们指示您可以使用updateCells清除带有gridRange参数的格式。 gridRange文档说
缺少索引表示该范围在该侧是无界的。
因此省去所有索引以影响整个工作表。
要清除整个工作表:
body = {
"requests": [
{
"updateCells": {
"range": {
"sheetId": sheetId
},
"fields": "userEnteredFormat"
}
}
]
}
spreadsheet.batch_update(body)
要清除范围:
body = {
"requests": [
{
"updateCells": {
"range": {
"sheetId": sheetId,
"startRowIndex": 1,
"endRowIndex": raws,
"startColumnIndex": first_col,
"endColumnIndex": last_col
},
"fields": "userEnteredFormat"
}
}
]
}
spreadsheet.batch_update(body)
答案 2 :(得分:0)
我知道这是旧的,可能指的是 v3,但我想我会添加对我有用的内容:
{
repeatCell: {
range: {
sheetId: sheetId,
startRowIndex: 0,
endRowIndex: <rows>,
startColumnIndex: 0,
endColumnIndex: <columns>
},
fields: "userEnteredFormat"
}