- Вы хотите получить значения, используя a1Notation
D2:D
, используя gspread с python. - На текущем этапе, когда запускается
wks.range('D2:D')
, появляется ошибка, которая отображается в вашем вопросе. - Вы хотите узнать причину этой ошибки.
- Вы уже смогли получить и поместить значения для Google Spreadsheet с помощью API Sheets.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
Когда я подтвердил исходный скрипт range()
, когда range()
выполнить, было обнаружено, что значения извлекаются с data = self.spreadsheet.values_get(range_label)
. Таким образом, в этом случае можно использовать D2:D
.
Но (last_row, last_column) = a1_to_rowcol(end)
выполняется, возникает ошибка. Сценарий a1_to_rowcol()
можно увидеть в здесь .
Когда a1_to_rowcol()
подтверждено, D2
из D2:D
возвращает значение из регулярного выражения CELL_ADDR_RE = re.compile(r'([A-Za-z]+)([1-9]\d*)')
. Но D
из D2:D
не возвращает значение из регулярного выражения. Таким образом, запускается raise IncorrectCellLabel(label)
, а затем возникает такая ошибка.
Обходной путь:
Чтобы получить значения, используя a1Notation D2:D
, как насчет следующего обходного пути? В этом обходном пути используется метод values_get(range, params=None)
. В этом случае D2:D
можно использовать для извлечения значений из электронной таблицы.
Пример сценария:
client = gspread.authorize(credentials)
spreadsheetId = "###" # Please set the Spreadsheet ID.
sh = client.open_by_key(spreadsheetId)
res = sh.values_get("Sheet1!D2:D") # Please set the a1Notation.
print(res) # or print(res['values'])
- В этом случае значения ячеек
D2:D
включены лист Sheet1
извлекается. - Когда имя листа не используется, как
res = sh.values_get("D2:D")
, значения извлекаются из 1-й вкладки в электронной таблице.
Ссылки:
Если я неправильно понял ваш вопрос, и это не было Направление вы хотите, я прошу прощения.