【问题标题】:google apps script UrlFetchApp.fetch limitations?谷歌应用脚​​本 UrlFetchApp.fetch 限制?
【发布时间】:2012-05-18 02:30:34
【问题描述】:

我有一个简单的脚本,可以提取大约 30,000 个 JSON 字符。

当我尝试使用JSON.parse()Utilities.jsonParse(); 解析它时,我得到SyntaxError: Unexpected token: F (line 12)

function refresh() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  sheet.clear();


  var text = UrlFetchApp.fetch("http://blablah/json");

  Logger.log(text.getContentText());

  //error SyntaxError: Unexpected token: F (line 12)
  json = JSON.parse(text);
)

记录器仅显示大约 59 行 JSON,但有人告诉我记录器有空间限制 - 但我不太确定是不是这样。

在我自己的服务器上运行,JSON.parse 可以很好地解析数据,jQuery get() 也是如此。

所以我认为 UrlFetchApp.fetch() 无法获取长文件?

很难接受,我没有找到关于它的文档:(

【问题讨论】:

  • 添加行“Logger.log(text.getContentText().length);”以确定实际提取了多少个字符。
  • 为什么不假设它得到了所有数据呢?我使用 UrlFetch 来捕获大量数据,我认为 30K 应该就可以了。只需使用 Utilities.jsonParse() - 你会收到错误吗? Eric 的推荐也很棒。
  • @mzimmerman JSON.parse 优于 Utilities.jsonParse。我现在不记得有什么区别了,但是在谷歌论坛上搜索应该可以找到。

标签: google-apps-script


【解决方案1】:

您可以在新的 Apps 脚本dashboard 上查看 UrlFetch 和其他服务限制。根据我的经验,Logger.log 对单个日志的限制比 UrlFetch 更严格,可能是 UrlFetch 做得很好,Logger.log 没有显示它,而您遇到了其他问题。

尝试将 getContentText 结果放在其他地方,例如一个电子表格单元格。或者拆分它并在 for 循环中调用 logger log。

您可能面临的一个可能错误(除了配额限制)是字符编码,getContentText 有一个可选参数,您可以在其中告知页面的编码,您检查了吗?

【讨论】:

  • 好的,我将其标记为答案,因为它帮助我找到了答案。是的 Logger.log(text.getContentText().length) 吐出 30k 个字符,并将其放入一个行单元格中就完成了。秘密是在做 value = text.getContentText();然后做 JSON.parse(value)
  • 当然!我们是怎么错过的? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 2023-03-20
  • 1970-01-01
  • 2021-06-16
  • 2021-02-12
  • 2020-10-24
相关资源
最近更新 更多