【问题标题】:Adding a value to a cell breaks conditional formatting in google sheets using gspread使用 gspread 向单元格添加值会破坏 Google 表格中的条件格式
【发布时间】:2021-09-29 09:36:24
【问题描述】:

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

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%

注意前面的'

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

【问题讨论】:

    标签: python google-sheets google-sheets-api gspread


    【解决方案1】:

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

    参考:

    【讨论】:

    • 感谢您的意见,将尝试。但是为什么145.1% 会小于 100?它是否尝试将其与某种 ASCII 字符串值进行比较?
    • @Jonas Palačionis 感谢您的回复。我带来的不便表示歉意。我认为145.1%1.451。当145.1% 作为value_input_option='USER_ENTERED' 放入单元格时,此值将转换为百分比值。在这种情况下,此值用作数字。使用'145.1%时,该值作为字符串使用。
    • 我试过了,条件格式按预期工作,实际上,我检查负值,所有负值都有红色背景,而所有正值都有中性背景,% 符号确实不影响此条件格式。谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多