我想把一个自定义的公式放在纸上使用扩展。这可以在Google和看上去像这样中实现。
我想使用gspread自动输入这个过程,类似于如何使用batch_update格式化多个单元格,我想使用它向多个单元格添加一个自定义公式。
发布于 2022-09-23 06:36:39
我相信你的目标如下。
=indirect("Sheet1!B2")<>"hello"
的条件格式规则,如果这是真的,则要将背景颜色设置为白色。在本例中,下面的示例脚本如何?
示例脚本:
spreadsheetId = "###" # Please set your Spreadsheet ID.
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet("Sheet2") # Please set your sheet name.
formula = '=indirect("Sheet1!B2")<>"hello"'
body = {
"requests": [
{
"addConditionalFormatRule": {
"index": 0,
"rule": {
"ranges": [{"sheetId": sheet.id}],
"booleanRule": {
"condition": {
"type": "CUSTOM_FORMULA",
"values": [{"userEnteredValue": formula}],
},
"format": {
"backgroundColorStyle": {
"rgbColor": {"red": 1, "green": 1, "blue": 1}
}
},
},
},
}
}
]
}
spreadsheet.batch_update(body)
addConditionalFormatRule
”中的所有单元格创建上述Sheet2。当Sheet1!B2
不是hello
时,"Sheet2“的所有单元格的背景色都是白色的。参考文献:
添加:
关于你下面的答复,
我在你的基础上修改了我的剧本,效果很好。我只想知道是否可以为单独的单元格创建一个条件格式规则列表。这个是可能的吗?
您的预期目标是下面的示例脚本?
示例脚本:
spreadsheetId = "###" # Please set your Spreadsheet ID.
sheetName = "Sheet2" # Please set your sheet name.
spreadsheet = client.open_by_key(spreadsheetId)
sheet = spreadsheet.worksheet(sheetName)
sheetId = sheet.id
service = build("sheets", "v4", credentials=client.auth)
res = service.spreadsheets().get(spreadsheetId=spreadsheetId, ranges=sheetName, fields="sheets(properties(gridProperties(rowCount,columnCount)))").execute()
row = res["sheets"][0]["properties"]["gridProperties"]["rowCount"]
column = res["sheets"][0]["properties"]["gridProperties"]["columnCount"]
formula = '=indirect("Sheet1!B2")<>"hello"'
requests = []
for i in range(row):
for j in range(column):
requests.append(
{
"addConditionalFormatRule": {
"index": 0,
"rule": {
"ranges": [
{
"sheetId": sheetId,
"startRowIndex": i,
"endRowIndex": i + 1,
"startColumnIndex": j,
"endColumnIndex": j + 1,
}
],
"booleanRule": {
"condition": {
"type": "CUSTOM_FORMULA",
"values": [{"userEnteredValue": formula}],
},
"format": {
"backgroundColorStyle": {
"rgbColor": {"red": 1, "green": 1, "blue": 1}
}
},
},
},
}
}
)
spreadsheet.batch_update({"requests": requests})
from googleapiclient.discovery import build
。addConditionalFormatRule
将在"Sheet2“的所有单元格中创建。但是,我认为上述脚本的结果是相同的。addConditionalFormatRule
将在"Sheet2“的所有单元格中创建。因此,例如,当使用默认工作表时,在1000行x 26列的所有单元格中都会创建许多条件格式规则。请小心这件事。row
和column
。发布于 2022-09-23 01:25:37
您可以在工作表更新中使用valueInputOption='USER_ENTERED'
参数。这基本上将输入到电子表格调用中,就像您自己手动输入它一样。在这里查看更多,https://developers.google.com/sheets/api/reference/rest/v4/ValueInputOption
使用sheets api:
sheets_service = build('sheets', 'v4', credentials=auth.get_credentials())
response = sheets_service.spreadsheets().values().update(
spreadsheetId='<ENTER SPREADSHEET ID HERE>', range='<ENTER CELL RANGE HERE>',
valueInputOption='USER_ENTERED', body='<YOUR CUSTOM FORMULA HERE>').execute()
展开:
sh.values_update(
'Sheet1!A2',
params={
'valueInputOption': 'USER_ENTERED'
},
body={
'values': ...
}
)
https://stackoverflow.com/questions/73810837
复制相似问题