【问题标题】:Import JSON From File - Not URL从文件导入 JSON - 不是 URL
【发布时间】:2020-12-26 06:04:54
【问题描述】:

我收到了一个 JSON 文件,其中包含来自美洲杯帆船赛的一场比赛的数据。如果这是正确的术语,它有 22 条“路径”,来自游艇上的传感器。

每条在线推荐都会从 GitHub 的 "ImportJSON" 返回脚本。但是,我无法调整提供的函数以从文件导入,而不是从 URL 访问 JSON 提要。

我也尝试将 JSON 文件导入为文本文件,但它太大,并抛出了异常。

带有 ImportJSON 脚本的电子表格的公共版本位于 ACWS,json 文件的副本位于 boat1.json (55.8Mb) 以及压缩文件位于 boat1.zip (3.9Mb)。

非常欢迎任何有关如何导入此 JSON 文件的建议。

【问题讨论】:

  • 如果反对者留下评论,说明他们为什么反对这个问题,这将很有用。它是否在我尚未找到的地方得到了回答?或者什么,有人只是恶意吗?
  • 添加您尝试过的代码的minimal reproducible example 和文本错误消息。
  • 一个“最小”的例子没有帮助,因为部分问题是根本无法导入 55.8Mb 大小的 JSON 文件。如果可以,也许我可以编写一些代码来“转换”它。似乎谷歌为广泛使用的 - 通常是大的 - JSON提要和/或文件添加功能有点慢。由于我找到了一种替代方法(尽管速度很慢),因此我将结束这个问题。

标签: json google-apps-script google-sheets


【解决方案1】:

要使用任何导入功能,您不能使用本地文件。您必须使用 URL。不过,您的 Google 文件页面的下载链接可以正常工作。

Google 目前将 URLFetchApp 调用限制为 50MB,因此无法直接导入。幸运的是,您的 zip 文件比这小得多,而且 Apps Script API 恰好有一个解压缩功能。

您可以调整此应用程序脚本以满足您的需求:

function ImportMyZipFile()
{
  // Your zip file URL:
  const url = 'https://drive.google.com/u/0/uc?id=1Zz5Oc_ZbK5Ohk0YRU6LxG2GdfEskf10_&export=download';

  let blob = UrlFetchApp.fetch(url).getBlob();
  // Need this or unzip will throw an error
  blob.setContentType('application/zip');

  // Get the only file in the zip archive
  let unzipped = Utilities.unzip(blob)[0];

  // Parse file contents to JS object
  let contents = unzipped.getDataAsString();
  let parsed = JSON.parse(contents);

  // Do what you want with parsed here...

  return /* data array here */;
}

parsed 现在保存您的 JavaScript 对象。要输出到单元格,请调用单元格中的函数,它将输出数据数组的内容。我不确切知道您想要 json 文件中的哪些数据,但这应该足以让您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多