【发布时间】:2018-10-19 22:00:27
【问题描述】:
我已经看过人们遇到类似问题的帖子,但找不到明确的答案。
我尝试使用以下代码行检索 264735 个插槽的二维数组:
var optionalArguments = {majorDimension: "ROWS",
valueRenderOption: "FORMULA",
};
var sourceValuesObject = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeA1Notation, optionalArguments)
但这是我得到的:
响应代码:413。消息:响应太大。
这看起来很奇怪,因为我看不到这种无处可写的限制以及如果 300000 个或更少的单元格会导致 API 错误,用户如何获取大量数据。
我尝试拆分请求并且它可以工作,但这使我的代码更加复杂和缓慢,而且在尝试将值更新回工作表范围时我得到一个空响应。
我指向正确的方向吗,这是否正常,有解决方法吗?
编辑: Here is a sample spreasheet
首先我尝试使用Sheets.Spreadsheets.Values.get 获取拆分范围
在for 循环中,它起作用了。
用batchGet 做同样的事情给了我同样的错误,所以我猜我的单元格内的数据太大了。
【问题讨论】:
-
您能否提供一个示例电子表格来复制您的情况?我认为它会帮助用户思考你的问题。
-
您确定它是 Sheets API 而不是 Apps 脚本方面的限制吗?也许尝试使用另一种语言的 api。 UrlFetch 调用的最大响应大小为 50MB/调用。同样的限制可能适用于 api 调用。
-
@Tanaike appart from the
rangeA1Notationvariable 这是唯一使它出错的代码。另外,我不能真正分享我的代码,我需要征求许可,但谢谢。 -
@I'-'我认为您的第一条评论是正确的。实际上,通过使用 OP 的共享电子表格进行的实验,发现您的评论是正确的。
-
@I'-'我非常感谢你。虽然像批量请求这样的方法可以通过一个 API 调用来调用多个请求,但 UrlFetchApp 的最大大小成为瓶颈。我认为在检索大尺寸值的情况下,
UrlFetchApp.fetchAll()比批量请求更合适。
标签: javascript google-apps-script google-sheets-api http-status-code-413