使用 gspread 向单元格添加值会破坏 google 工作表中的条件格式

Adding a value to a cell breaks conditional formatting in google sheets using 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%

注意前面的'

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

在你的脚本中,如何将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。请注意这一点。

参考: