我正在尝试使用Ruby API更新Google表格(这只是SheetsV4 API的包装)
我遇到以下错误
Google :: Apis :: ClientError:badRequest:范围('MySheet'!AA1)超出了网格限制。最大行数:1000,最大列数:26
我在google论坛上找到了有关此问题的参考,但是似乎没有解决该问题的方法,只能使用其他方法写入电子表格。
问题是,我需要复制一个现有的电子表格模板,然后在各种工作表中输入我的原始数据。到目前为止,我一直在使用此代码(service
Ruby 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
因此,基本上我在考虑使用update_spreadsheet_value
而不是append_xx
因为要求(2)。但是由于API中存在此错误/限制(不清楚),因此无法正常工作。同样要注意的一点:我实际上并不是一次更新所有这30列,而是实际上多次调用该update
方法(每次最多10列)
我以为-也许我错过了发送到Google API的选项,允许一次执行超过26列?-也许这实际上是update
API的未记录硬限制-也许我可以诉诸于删除现有数据+使用附加
编辑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] 删除。
我来说两句