2

我正在尝试使用定义的格式更新一些单元格范围,但是当范围重叠时我遇到了问题。例如,如果我有一系列单元格A1:C3,并且我想将单元格设置A2:B2为绿色背景色,然后让它们都具有粗体字体样式,则结果只有后者 - 先前单元格的背景色被覆盖以大胆的风格。如果我以相反的顺序执行此操作,则单元格的背景为绿色,但没有粗体。我正在使用 pygsheets 库,这大致是我的调用的工作方式:

# wks is a worksheet object from the created spreadsheet
wks.range("A2:B2", "range").apply_format(L_GREEN_BG, fields="userEnteredFormat")
wks.range("A1:C3", "range").apply_format(BOLD, fields="userEnteredFormat")

BOLDL_GREEN_BG是使用由 Google Sheets API 指定的类 json 格式的字典初始化的单元格对象,以匹配这些更新。

我的问题是:有没有办法不覆盖以前所做的更改?像这样按顺序执行比对单个单元进行更复杂的更新要方便得多。

4

2 回答 2

2

如果您希望其他属性保持不变,请在字段上更具体。所以在你的第一个案例集fields='userEnteredFormat\backgroundColor'和你的第二个请求中"userEnteredFormat\textFormat"

于 2020-03-10T13:05:48.393 回答
0

好的,在阅读pygsheets库的源代码后,我想我知道为什么会发生这种情况。该apply_format方法发送一个repeatCell请求,该请求基本上复制所有提供的单元格的属性并将它们应用于提供范围内的所有单元格。因此,当我提供一个只有粗体字体样式的单元格(BOLD/L_GREEN_BG对象,它们只是一个只定义了一个属性的虚拟单元格对象)时,范围内的所有单元格都会获得它的所有属性以及默认值。其他所有后续调用都类似地工作。

于 2020-03-10T10:47:53.300 回答