首页 > 解决方案 > 使用 gspread 向单元格添加值会破坏 Google 表格中的条件格式

问题描述

我有一个谷歌表格工作表,如下所示:

col1        col2        col3        col4
ABC         10          ABC         145.1
ABC         15.5        ABC         574.5
ABC         26.7        ABC         45.4

如果它们的值小于给定值,我将单元格标记为红色并且它可以工作:

rule = ConditionalFormatRule(
    ranges=[GridRange.from_a1_range('B:D', worksheet)],
    booleanRule=BooleanRule(
        condition=BooleanCondition('NUMBER_LESS', ['100']),
        format=CellFormat(backgroundColor=Color(0.992, 0.529, 0.529))
    )
)

rules = get_conditional_format_rules(worksheet)
rules.append(rule)
rules.save()

我像这样添加%符号col2 & col4

cell_list = [worksheet.range('B2:B4'), worksheet.range('D2:D4')]

sign_to_add = '%'

for item in cell_list:
    for val in item:
        val.value = val.value + sign_to_add 
        
for item in cell_list:
    worksheet.update_cells(item) 
col1        col2        col3        col4
ABC         10%         ABC         145.1%
ABC         15.5%       ABC         574.5%
ABC         26.7%       ABC         45.4%

但这打破了我在上面所做的条件格式。如果我切换代码位置,则格式不起作用,因为一旦在 google 表格中单击单元格,就会像这样:

'10%

注意前面的'

有没有办法在能够向%单元格添加符号的同时实现条件格式?

标签: pythongoogle-sheetsgoogle-sheets-apigspread

解决方案


在您的脚本中,如何添加value_input_option='USER_ENTERED'以下方法update_cells?似乎默认value_input_option值为RAW. 由此,'被添加。

从:

worksheet.update_cells(item) 

至:

worksheet.update_cells(item, value_input_option='USER_ENTERED')

笔记:

  • 在这种情况下,当您的脚本运行时,145.1变为145.1%. 由此,该值小于100。请注意这一点。

参考:


推荐阅读