Я использую Python 2.7 на Raspberry Pi с версией 3.0.0 gspread.
Когда я использую функцию gspread get_all_values(), я получаю следующую ошибку:
File "/home/pi/DB/GSheets/GoogleSheets.py", line 121, in GetAll
listOfLists = googleSheetName.worksheet(GSTabName).get_all_values()
File "/home/pi/.local/lib/python2.7/site-packages/gspread/models.py", line 444, in get_all_values
data = self.spreadsheet.values_get(self.title)
File "/home/pi/.local/lib/python2.7/site-packages/gspread/models.py", line 110, in values_get
r = self.client.request('get', url, params=params)
File "/home/pi/.local/lib/python2.7/site-packages/gspread/client.py", line 79, in request
raise APIError(response)
gspread.exceptions.APIError: {
"error": {
"code": 400,
"message": "Range ('name'!name) exceeds grid limits. Max rows: 52, max columns: 17",
"status": "INVALID_ARGUMENT"
}
}
Эта проблема не возникала у меня в предыдущей версии gspread. Текущая версия, ранее известная как «v4», похоже, представила это. Насколько я могу судить, функция get_all_values не изменилась между двумя версиями. Кто-нибудь знает, что может быть причиной этого внезапно?
Заранее спасибо!
РЕДАКТИРОВАТЬ:
«имя» используется в качестве заполнителя для имени рабочего листа.
EDIT2:
Примечание. Я подключил проект к совершенно новому листу Google с идентичными рабочими листами (и именами), и ошибка все еще возникает. Все имена рабочих листов являются буквенно-цифровыми и не содержат пробелов или специальных символов.
EDIT3:
Название вкладки, на которой он застревает, имеет форму «ABC1», но это первая вкладка, которая читается.
После изменения его на «SheetA» if response.ok:
в client.py завершается успешно 4 раза, а затем происходит сбой MySQLdb из-за синтаксической ошибки SQL в его собственных файлах дистрибутива (вероятно, вызванной неправильными данными, используемыми для построения команды ). Прежде чем изменить имя вкладки на «SheetA», response.ok завершится успешно 3 раза, а затем завершится ошибкой. Когда я заставляю исключение не создаваться, отправленные данные (список списков, содержащих значения рабочего листа) ничем не отличаются от того, что отправляется, когда исключение не запускается.
Фактический размер рабочего листа составляет 52 x 17 (строки x столбцы). Размеры в APIError всегда соответствуют размерам рабочего листа.
EDIT4:
Это было обнаружено: следующие форматы имен рабочих листов (вкладок) вызывают APIError (код 400): «ABC1», «ABC123», однако «ABCD123» или «ABC1D» работают. Я также заметил, что когда я перемещаю рабочий лист/вкладку с допустимым именем (называется FirstSheet ниже) перед рабочим листом с недопустимым именем, возникает ошибка, включающая FirstSheet имя вроде этого: read.exceptions.APIError: { "error": { "code": 400, "message": "Range (FirstSheet!ABC123) exceeds grid limits. Max rows: 132, max columns: 17", "status": "INVALID_ARGUMENT" }
, но только при сбое с недопустимым именем. Предыдущие действительные рабочие листы читаются без проблем. Все листы разного размера.
'sheet1'!A2:C33
вместоsheet1!A2:C33
19.05.2020