Найденное имя ячейки не совпадает с именем в листах Google - PullRequest
1 голос
/ 01 октября 2019

Я использую gspread для редактирования моего листа google, но у меня возникли проблемы с вызовом имени ячейки.


Я использую этот код, чтобы найти и показать, в какой ячейке находится слово «LOCATE»:

cell_list = worksheet.findall('LOCATE')
print(cell_list)

, получив результат:

[<Cell R12C1 'LOCATE'>]

IЯ использую ячейку «A12» для тестирования, поэтому я вижу, что «R12C1» обозначает строку 12, столбец 1Я успешно записываю в эти ячейки код:

worksheet.update_acell('A12', "TEST")

, однако, если я пытаюсь проверить редактирование ячейки 'R12C1' с помощью этого кода, это не сработает:

worksheet.update_acell('R12C1', "TEST")

Есть ли способ, которым я мог бы вместо этого вызывать функцию 'findall' и вызывать имя ячейки в стиле 'A12'?


Я сейчас пользуюсь этим, но он немного неряшливый, и мне интересно, есть ли у кого-нибудь советы?

alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
deconstruct = str(cell_list[0:1])
row_value = deconstruct[8:10]
col_value = alphabet[(int(deconstruct[11:13])-1)]
cell = col_value + row_value
worksheet.update_acell(cell, "TEST")

1 Ответ

0 голосов
/ 01 октября 2019

Как насчет этого ответа?

Когда я увидел , скрипт gspread , findall извлекает значения листа, используя метод spreadsheets.values.get из Sheets API изначение ищется из извлеченных значений, которые являются двумерным массивом. Таким образом, в этом случае координаты ячеек возвращаются как тип R1C1. Если вы хотите получить A1Notation, я думаю, что ваш скрипт может быть полезен.

Чтобы использовать значения, полученные с помощью findall, если вы хотите сделать скрипт более простым, как насчет использования update_cell или update_cells вместо update_acell? В этом случае пример сценария выглядит следующим образом.

Пример сценария:

В следующих образцах сценариев предполагается, что на листе есть ячейка, включающая значение LOCATE.

Шаблон 1:

В этом шаблоне координата ячейки извлекается из cell_list.

cell_list = worksheet.findall('LOCATE')

value = cell_list[0]
worksheet.update_cell(value.row, value.col, 'TEST')

Шаблон 2:

В этом шаблонеячейка, полученная с помощью findall, обновляется.

cell_list = worksheet.findall('LOCATE')

cell_list[0].value = 'TEST'
worksheet.update_cells(cell_list)

Примечание:

  • В этих примерах сценариев предполагается, что вы уже смогли поместить и получить значения для электронной таблицы с помощью gspread.

Ссылки:

ЕслиЯ неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

...