json - 从文件导入 JSON - 不是 URL
问题描述
我收到了一个 JSON 文件,其中包含来自美洲杯游艇的数据,用于一场比赛。如果这是正确的术语,它有 22 条“路径”,来自游艇上的传感器。
每个在线推荐都会从GitHub 上的“ImportJSON”返回脚本。但是,我无法调整提供的函数以从文件导入,而不是从 URL 访问 JSON 提要。
我也尝试将 JSON 文件作为文本文件导入,但它太大了,并引发了异常。
我的带有 ImportJSON 脚本的电子表格的公共版本位于ACWS,json 文件的副本位于boat1.json (55.8Mb) 以及一个压缩文件位于boat1.zip (3.9Mb)。
非常欢迎任何有关如何导入此 JSON 文件的建议。
解决方案
要使用任何导入功能,您不能使用本地文件。您必须使用 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 文件中的哪些数据,但这应该足以让您入门。
推荐阅读
- python - 排序后如何从python中的文本文件中显示超过100的数字?
- bash - 批量更改和替换子目录中的文件扩展名
- javascript - ngOnInit 无法更新局部变量
- c - 命名管道 - 运行子进程
- java - 是否可以将图像放在所有其他布局元素(按钮......)
- excel - 在 VBA 中复制和粘贴图表时是否可以避免 CopyPaste 功能?
- javascript - 无法在量角器中使用 .click() 打开日期选择器 >“失败:元素不可交互”
- javascript - 如何更新其他组件的html文本值
- java - HorizontalScrollView 中的布局问题
- video - 在 YouTube 播放器中支持外部源