gspread错误代码400"范围('名称'!名称)超出网格限制"

时间:2018-04-13 16:45:27

标签: python-2.7 raspbian gspread

我在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" },但只有在无效名称崩溃时。以前的有效工作表是没有问题的。 工作表的大小各不相同。

5 个答案:

答案 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)

就我而言,我必须打开 Google 表格文件,然后点击表格底部的“添加 1000 行”按钮才能解决问题。

enter image description here