我在Raspberry Pi上使用python 2.7,版本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", client.py 中的if response.ok:
成功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" }
,但只有在无效名称崩溃时。以前的有效工作表是没有问题的。
工作表的大小各不相同。
答案 0 :(得分:3)
我遇到了同样的问题,尽管我的代码是红宝石。下划线不起作用。
发生的情况是,当文件名以整数结尾(例如您的工作表名称为ABC123
)时,google感到困惑。因此ABC123X
可以正常工作。
要解决此问题,我必须使用单引号-FirstSheet!'ABC123'
我的代码看起来像这样:
service.get_spreadsheet(file_id, ranges: "'ABC123'")
答案 1 :(得分:1)
当尝试通过range方法附加单元格时,出现了相同的错误。我发现是否在工作表中添加了其他空单元格/列,但未发生此错误。
答案 2 :(得分:1)
我遇到了同样的问题,在尝试之后,我意识到我试图更新不在工作表中包含的范围内的单元格(工作表中有直到F且函数调用“ P”列的列)。 可能并非所有情况都是因为这种情况,但这是在我的脑海中,所以也许有人来这里寻求解决方案,这可能会有用。
答案 3 :(得分:0)
我不确定为什么这样,但是我发现的一种解决方法是在工作表名称下加下划线(在 Google表格中):
_Worksheet1_
答案 4 :(得分:0)