在 Google-Apps-Script 中从外部 URL 抓取大数据的替代方法
Alternative ways to scrape large data from external URLs in Google-Apps-Script
问题
在 Google Apps 脚本中,是否有其他方法可以从外部 URL 获取数据?
使用 UrlFetchApp.fetch(URL)
的首选方式在我的情况下不起作用。
检索到的数据(一个 JSON 字符串)被截断了,可能是因为它太长了。
显示限制的代码
function ShowFetchLimit() {
var request = UrlFetchApp.fetch("http://www.gw2spidy.com/api/v0.9/json/all-items/all")
var response = request.getContentText()
Logger.log('Your retrieved string length is ' response.length)
}
Preview on a public Google-Apps script
日志输出
Your retrieved string length is: 10.485.277
但真正的字符串长度应该是11.439.522个字符长。看来我遇到了 Google 脚本限制,可能是 URL Fetch POST size 限制,即每次调用 10MB
您正在达到似乎未发布但与 urlFetch "post" 配额一致的限制。
我确实没有办法解决我所见过的问题。例如,假设您改为调用您的服务器,要求将响应写在 spreadsheet 上。然后从您的应用程序中尝试读取价差sheet。我试过从 gas 读取巨大的 sheet 范围,但在某些时候它无法读取它。 Gas 的 ram 也有限,对于其中一个,它需要适合 ram(除了任何其他网络读取配额)。
问题
在 Google Apps 脚本中,是否有其他方法可以从外部 URL 获取数据?
使用 UrlFetchApp.fetch(URL)
的首选方式在我的情况下不起作用。
检索到的数据(一个 JSON 字符串)被截断了,可能是因为它太长了。
显示限制的代码
function ShowFetchLimit() {
var request = UrlFetchApp.fetch("http://www.gw2spidy.com/api/v0.9/json/all-items/all")
var response = request.getContentText()
Logger.log('Your retrieved string length is ' response.length)
}
Preview on a public Google-Apps script
日志输出
Your retrieved string length is: 10.485.277
但真正的字符串长度应该是11.439.522个字符长。看来我遇到了 Google 脚本限制,可能是 URL Fetch POST size 限制,即每次调用 10MB
您正在达到似乎未发布但与 urlFetch "post" 配额一致的限制。
我确实没有办法解决我所见过的问题。例如,假设您改为调用您的服务器,要求将响应写在 spreadsheet 上。然后从您的应用程序中尝试读取价差sheet。我试过从 gas 读取巨大的 sheet 范围,但在某些时候它无法读取它。 Gas 的 ram 也有限,对于其中一个,它需要适合 ram(除了任何其他网络读取配额)。