首页 > 解决方案 > 从文件导入 JSON - 不是 URL

问题描述

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

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

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

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

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

标签: jsongoogle-apps-scriptgoogle-sheets

解决方案


要使用任何导入功能,您不能使用本地文件。您必须使用 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 文件中的哪些数据,但这应该足以让您入门。


推荐阅读