gspread 错误代码 400 "Range ('name'!name) exceeds grid limits"
gspread error code 400 "Range ('name'!name) exceeds grid limits"
我在 Raspberry Pi 上使用 python 2.7,gspread 版本为 3.0.0。
当我使用 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 函数在两个版本之间没有变化。有谁知道是什么原因突然造成的?
提前致谢!
编辑:
'name' 被用作工作表名称的占位符。
编辑 2:
注意:我已将项目连接到具有相同工作表(和名称)的全新 Google Sheet,但错误仍然存在。所有工作表名称都是字母数字,不包含空格或特殊字符。
编辑 3:
它卡住的选项卡的名称是 "ABC1" 的形式,但这是第一个被读取的选项卡。
改成"SheetA"后,client.py中的if response.ok:
成功4次,然后MySQLdb崩溃到它自己的分发文件中的 SQL 语法错误(可能是由于用于构建命令的错误数据引起的)。在将选项卡名称更改为 "SheetA" 之前,response.ok 会成功 3 次然后失败。当我强制不抛出异常时,发送的数据(包含工作表值的列表列表)与未触发异常时发送的数据没有什么不同。
工作表的实际尺寸为 52 x 17(行 x 列)。 APIError 中的维度始终与工作表的维度匹配。
编辑4:
已发现:以下工作表(选项卡)名称格式引发 APIError(代码 400):"ABC1"、"ABC123",但是 "ABCD123" 或 "ABC1D" 有效。我还注意到,当我将具有有效名称的 worksheet/tab (在下面称为 FirstSheet )移动到具有无效名称的工作表之前时,会引发错误包括 FirstSheet 名称,如下所示:read.exceptions.APIError: { "error": { "code": 400, "message": "Range (FirstSheet!ABC123) exceeds grid limits. Max rows: 132, max columns: 17", "status": "INVALID_ARGUMENT" }
,但仅在出现无效名称时崩溃。以前的有效工作表可以毫无问题地阅读。
工作表的大小各不相同。
我在尝试通过范围方法追加单元格时遇到了同样的错误。我发现如果在 sheet 中添加了一个额外的空 cell/col 则不会发生此错误。
我不确定为什么会这样,但我发现的一个解决方法是用下划线将工作表名称括起来(在 Google Sheets 中):
_Worksheet1_
我遇到了同样的问题,在尝试和尝试后意识到我正在尝试更新不在 sheet 中包含的范围内的单元格(sheet 有直到 F 和 a 的列函数正在调用 "P" 列)。
可能不是所有情况都是因为那个,但它在我身上,所以也许有人来这里寻找解决方案,这可能会有用。
我遇到了同样的问题,尽管我的代码在 ruby 中。下划线无效。
当文件名以整数结尾时,google 会感到困惑,例如您的 sheet 名称称为 ABC123
。所以 ABC123X
会工作得很好。
为了修复它,我不得不使用单引号将其转义 - FirstSheet!'ABC123'
我的代码看起来像这样:
service.get_spreadsheet(file_id, ranges: "'ABC123'")
在我的例子中,我不得不打开 Google Sheet 文件并单击 sheet 底部的“添加 1000 行”按钮来解决问题。
我在 Raspberry Pi 上使用 python 2.7,gspread 版本为 3.0.0。
当我使用 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 函数在两个版本之间没有变化。有谁知道是什么原因突然造成的?
提前致谢!
编辑:
'name' 被用作工作表名称的占位符。
编辑 2:
注意:我已将项目连接到具有相同工作表(和名称)的全新 Google Sheet,但错误仍然存在。所有工作表名称都是字母数字,不包含空格或特殊字符。
编辑 3:
它卡住的选项卡的名称是 "ABC1" 的形式,但这是第一个被读取的选项卡。
改成"SheetA"后,client.py中的if response.ok:
成功4次,然后MySQLdb崩溃到它自己的分发文件中的 SQL 语法错误(可能是由于用于构建命令的错误数据引起的)。在将选项卡名称更改为 "SheetA" 之前,response.ok 会成功 3 次然后失败。当我强制不抛出异常时,发送的数据(包含工作表值的列表列表)与未触发异常时发送的数据没有什么不同。
工作表的实际尺寸为 52 x 17(行 x 列)。 APIError 中的维度始终与工作表的维度匹配。
编辑4:
已发现:以下工作表(选项卡)名称格式引发 APIError(代码 400):"ABC1"、"ABC123",但是 "ABCD123" 或 "ABC1D" 有效。我还注意到,当我将具有有效名称的 worksheet/tab (在下面称为 FirstSheet )移动到具有无效名称的工作表之前时,会引发错误包括 FirstSheet 名称,如下所示:read.exceptions.APIError: { "error": { "code": 400, "message": "Range (FirstSheet!ABC123) exceeds grid limits. Max rows: 132, max columns: 17", "status": "INVALID_ARGUMENT" }
,但仅在出现无效名称时崩溃。以前的有效工作表可以毫无问题地阅读。
工作表的大小各不相同。
我在尝试通过范围方法追加单元格时遇到了同样的错误。我发现如果在 sheet 中添加了一个额外的空 cell/col 则不会发生此错误。
我不确定为什么会这样,但我发现的一个解决方法是用下划线将工作表名称括起来(在 Google Sheets 中):
_Worksheet1_
我遇到了同样的问题,在尝试和尝试后意识到我正在尝试更新不在 sheet 中包含的范围内的单元格(sheet 有直到 F 和 a 的列函数正在调用 "P" 列)。 可能不是所有情况都是因为那个,但它在我身上,所以也许有人来这里寻找解决方案,这可能会有用。
我遇到了同样的问题,尽管我的代码在 ruby 中。下划线无效。
当文件名以整数结尾时,google 会感到困惑,例如您的 sheet 名称称为 ABC123
。所以 ABC123X
会工作得很好。
为了修复它,我不得不使用单引号将其转义 - FirstSheet!'ABC123'
我的代码看起来像这样:
service.get_spreadsheet(file_id, ranges: "'ABC123'")
在我的例子中,我不得不打开 Google Sheet 文件并单击 sheet 底部的“添加 1000 行”按钮来解决问题。