Google Spreadsheet API返回网格限制错误

西里尔·杜松·多丽丝

我正在尝试使用Ruby API更新Google表格(这只是SheetsV4 API的包装)

我遇到以下错误

Google :: Apis :: ClientError:badRequest:范围('MySheet'!AA1)超出了网格限制。最大行数:1000,最大列数:26

在google论坛上找到了有关此问题的参考,但是似乎没有解决该问题的方法,只能使用其他方法写入电子表格。

问题是,我需要复制一个现有的电子表格模板,然后在各种工作表中输入我的原始数据。到目前为止,我一直在使用此代码(serviceRuby SheetsV4 API的客户端在哪里)

def write_table(values, sheet: 'Sheet1', column: 1, row: 1, range: nil, value_input_option: 'RAW')
  google_range = begin
    if range
      "#{sheet}!#{range}"
    elsif column && row
      "#{sheet}!#{integer_to_A1_notation(column)}#{row}"
    end
  end
  value_range_object = ::Google::Apis::SheetsV4::ValueRange.new(
    range: google_range, values: values
  )
  service.update_spreadsheet_value(spreadsheet_id,
    google_range,
    value_range_object,
    value_input_option: value_input_option
  )
end

到目前为止,它运行良好,但是在向提取物中添加了更多数据之后,我浏览了第26列(从第2列AA开始),现在却遇到了错误。

有什么选择可以传递给update_spreadsheet_value我们以便我们提高此限制吗?

否则,使用append写入电子表格的另一种方法是什么?

编辑-我的情况的清晰描述

我有一个带有8个工作表(标签)的Google电子表格模板,其中有4个标题页RAW-XX,这是我尝试更新数据的地方。

最初,这些原始标签只有30列的标题(A1-> AD1)。我的代码需要能够填充所有单元格A2-> AD42

  • (1)第一次
  • (2)并且我的代码需要能够重新运行以用新值替换那些值,而无需附加

因此,基本上我在考虑使用update_spreadsheet_value而不是append_xx因为要求(2)。但是由于API中存在此错误/限制(不清楚),因此无法正常工作。同样要注意的一点:我实际上并不是一次更新所有这30列,而是实际上多次调用该update方法(每次最多10列)

我以为-也许我错过了发送到Google API的选项,允许一次执行超过26列?-也许这实际上是updateAPI的未记录硬限制-也许我可以诉诸于删除现有数据+使用附加

编辑2

假设我有一个版本为1的模板,其中包含多张工作表(请注意,我=xx用来表示一个公式,[empty]表示该单元格中没有任何内容,并1表示已提供原始值“ 1”

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
[empty]            | [empty]            |

Sheet2 - FORMATTED
Number of foos       | Number of Bars
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'B2

现在,我将应用程序称为“第一次”,这会将现有模板复制到新文件“ generated_spreadsheet”中,并将数据注入RAW表中。原来,我的应用程序显示有1个foo和0个bar

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
1                  | 0                  |

Sheet2 - FORMATTED
Number of foos       | Number of Bars
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2

也许如果以后再调用我的应用程序,也许模板和数据在这两者之间发生了变化,所以我想替换“ generate_spreadsheet”中的所有内容

新模板已介于

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
[empty]            | [empty]            |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2

假设现在我的应用程序说仍然有1个foo,并且条形的数量从0变为2,我想更新“ generate_spreadsheet”,这样看起来

Sheet1 - RAW
RAW Number of foos | RAW Number of Bars |
1                  | 3                  |

Sheet2 - FORMATTED
Number of foos       | Number of Bars     | All items
='Sheet1 - RAW'!A2   | ='Sheet1 - RAW'!B2 | =A2 + B2
邹洪学

这是因为超出范围。

AA1表示列是AA,也表示27,因此该起点AA1不存在,这就是您遇到此错误的原因。

您可以尝试Z1,这应该没问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章