Последовательные обновления диапазонов в Google Sheets API через pygsheets - PullRequest
1 голос
/ 10 марта 2020

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

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

Ответы [ 2 ]

1 голос
/ 10 марта 2020

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

0 голосов
/ 10 марта 2020

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

...