如何在谷歌应用脚​​本中解压 .ZIP mime 类型(应用程序/x-zip-compressed)

Posted

技术标签:

【中文标题】如何在谷歌应用脚​​本中解压 .ZIP mime 类型(应用程序/x-zip-compressed)【英文标题】:How to unzip .ZIP mime type (application / x-zip-compressed) in google app script 【发布时间】:2021-07-08 12:00:53 【问题描述】:

我有以下问题,我正在开发一个过程来解压缩并验证 .zip 中的文件在 google 驱动器文件夹中,问题是这些 .zip 是 Mime (application / x-zip-压缩) 并且方法 ** unzip ** 似乎无法识别这种类型的 Mime,因为 (application / zip) 确实可以正常工作。

附上示例代码:

function unZipIt() 
  var theFolder = DriveApp.getFolderById('Id de la carpeta')
  var fileBlob = theFile.next().getBlob()

  fileBlob.setContentType("application/x-zip-compressed")

  var unZippedfile = Utilities.unzip(fileBlob)
Logger.log(unZippedfile);
  

var unZippedfile = Utilities.unzip (fileBlob) 行中抛出的异常如下:

**Exception: Converting from application/x-zip-compressed to application/zip is not supported.**

我的问题是:如何解压缩或迭代这些 Zip 中的文件,类型为 Mime: ** application / x-zip-compressed ** 或者如何转换为 ** application / zip **?

注意:如果写得不好,对不起,我正在使用翻译器。

谢谢

【问题讨论】:

这些 zip 文件是如何创建的?另外,您是否尝试过将setContentType 更改为 zip? 我在 Windows 10 中创建了这些文件并将它们上传到我尝试使用 setContentType to` application / zip` 的驱动器,但它引发了以下错误:Exception: Unexpected error while getting the method or property unzip on object Utilities 虽然从你的脚本来看,我无法理解theFile,比如用setContentTypeFromExtension()代替setContentType("application/x-zip-compressed"),你会得到什么结果? 【参考方案1】:

您可以按照@Tanaike 的建议使用setContentTypeFromExtension 方法:

var thisFile = DriveApp.getFileById(newestFileId);
var thisBlob = thisFile.getBlob();
var convertedBlob = thisBlob.setContentTypeFromExtension();
var thisUnzip = Utilities.unzip(convertedBlob);

【讨论】:

以上是关于如何在谷歌应用脚​​本中解压 .ZIP mime 类型(应用程序/x-zip-compressed)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用谷歌应用脚​​本在谷歌大查询中保存 2 个表?

集成 Plaid 和 Google Apps 脚本

在谷歌浏览器中安装.crx扩展名的离线Chrome插件

在谷歌浏览器中安装.crx扩展名的离线Chrome插件

在存储在谷歌驱动器中的谷歌 Colaboratory 中导入 zip 文件

Android Intent FileProvider“权限被拒绝”在谷歌地球中打开KML文件?