Последовательные обновления диапазонов в Google Sheets API через pygsheets

Я пытаюсь обновить некоторые диапазоны ячеек с определенным форматом, но у меня возникает проблема, когда диапазоны перекрываются. Например, если у меня есть диапазон ячеек 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")

BOLD и L_GREEN_BG — это объекты ячеек, инициализированные словарем в формате json, указанном API Google Sheets для соответствия этим обновлениям.

Мой вопрос: есть ли способ не перезаписывать ранее внесенные изменения? Делать это последовательно, как это, было бы намного удобнее, чем делать более сложные обновления отдельных ячеек.


person Maciej B. Nowak    schedule 10.03.2020    source источник


Ответы (2)


если вы хотите, чтобы другие свойства не менялись, укажите более конкретные поля. Итак, в вашем первом случае установите fields='userEnteredFormat\backgroundColor', а во втором запросе "userEnteredFormat\textFormat"

person Nithin    schedule 10.03.2020

ОК, прочитав исходный код библиотеки pygsheets, я думаю, что понял, почему это происходит. Метод apply_format отправляет запрос repeatCell, который в основном копирует все предоставленные свойства ячейки и применяет их ко всем ячейкам в предоставленном диапазоне. Поэтому, когда я предоставляю ячейку (объекты BOLD/L_GREEN_BG, которые являются просто фиктивными объектами ячеек с только одним определенным свойством) только с жирным шрифтом, все ячейки в диапазоне получают все его свойства вместе со значениями по умолчанию. Аналогично работает любой другой последующий вызов.

person Maciej B. Nowak    schedule 10.03.2020