You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Drive文件解压异常:无报错但未生成解压文件夹

问题

尝试解压Google Drive文件夹内的压缩文件,分别测试了两类压缩包:一类是从Gmail下载的包含xlsx文件的压缩包,另一类是我上传到Drive的包含jpg文件的压缩包。执行脚本时未出现任何错误,执行日志显示“Unzipping completed”,但始终未生成解压后的文件夹。

原脚本代码:

var folderId = "Folder_ID"; 

// 使用Google Drive API获取文件夹内容
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();

// 创建空数组存储文件夹内文件的blob
var blobs = [];

// 遍历文件夹内的每个文件,将其blob添加到数组中
while (files.hasNext()) {
  var file = files.next();
  blobs.push(file.getBlob());
}

// zip变量指向包含文件夹所有文件的压缩包blob
var zip = Utilities.zip(blobs, "folder_contents.zip");
Logger.log(zip);

// 解压该blob
var unzippedFiles = Utilities.unzip(zip);

// 输出解压后文件的名称
for (var i = 0; i < unzippedFiles.length; i++) {
  Logger.log(unzippedFiles[i].getName());
}

Logger.log("Unzipping completed.");
} 
解决方案

原脚本存在两个核心问题:

  • 逻辑偏离需求:它没有解压文件夹内的目标压缩包,反而把文件夹内所有文件(包括你的压缩包)重新打包成新zip,再解压这个自制zip
  • 解压后的文件仅存于内存,未写入Google Drive,因此看不到实际文件

修改后的脚本会:

  1. 筛选出文件夹内的所有.zip格式文件
  2. 逐个解压这些压缩包
  3. 将解压后的文件保存到指定Google Drive文件夹

修改代码如下:

var folderId = "你的文件夹ID"; // 替换为目标文件夹ID
var targetFolder = DriveApp.getFolderById(folderId); // 解压文件将保存到这个文件夹

// 获取文件夹内所有文件
var files = targetFolder.getFiles();

while (files.hasNext()) {
  var file = files.next();
  // 仅处理zip格式的压缩文件
  if (file.getMimeType() === "application/zip") {
    Logger.log("正在解压:" + file.getName());
    // 解压当前压缩包
    var unzippedBlobs = Utilities.unzip(file.getBlob());
    
    // 将每个解压后的文件保存到Drive
    unzippedBlobs.forEach(function(blob) {
      targetFolder.createFile(blob);
      Logger.log("已保存:" + blob.getName());
    });
  }
}

Logger.log("解压完成");

内容的提问来源于stack exchange,提问作者Pelin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:33:27