是否可以使用 Google Apps 脚本解压缩 7zip 文件格式的文件?

Is it possible to unzip a file in 7zip file format using Google Apps Script?

我已经能够使用 Google Apps 脚本轻松地成功解压一个普通的 zip 文件。但是,我使用的程序输出某些使用 7zip 压缩的文件。有没有办法在 Google Apps 脚本中解压 7zip 文件?

谢谢!

Google Apps 脚本不支持开箱即用的 7 zip。只支持Gzip and Zip.

然而,如果有必要的时间和知识,您可以获得一个用 javascript 编写的开源扩展并将其重新写入 Apps 脚本,请注意,如果扩展具有依赖项,您将不得不重新- 也编写依赖项。

也许您可以先尝试使用 cloudconvert api 转换为 zip 文件(每天最多免费转换 25 次) https://cloudconvert.com/api/v2/jobs/builder

端点

POST https://api.cloudconvert.com/v2/jobs

请求正文

{
    "tasks": {
        "import-1": {
            "operation": "import/url",
            "url": "https://notepad-plus-plus.org/repository/7.x/7.0/npp.7.bin.minimalist.x64.7z"
        },
        "task-1": {
            "operation": "convert",
            "input_format": "7z",
            "output_format": "zip",
            "engine": "archivetool",
            "input": [
                "import-1"
            ]
        },
        "export-1": {
            "operation": "export/url",
            "input": [
                "task-1"
            ],
            "inline": false,
            "archive_multiple_files": false
        }
    }
}

创建新的 API 密钥: https://cloudconvert.com/dashboard/api/v2/keys

Google AppScript:

function cloudConvert7ztoZip() {
// Make a POST request with a JSON payload.
var data = {
    "tasks": {
        "import-1": {
            "operation": "import/url",
            "url": "https://notepad-plus-plus.org/repository/7.x/7.0/npp.7.bin.minimalist.x64.7z"
        },
        "task-1": {
            "operation": "convert",
            "input_format": "7z",
            "output_format": "zip",
            "engine": "archivetool",
            "input": [
                "import-1"
            ]
        },
        "export-1": {
            "operation": "export/url",
            "input": [
                "task-1"
            ],
            "inline": true,
            "archive_multiple_files": true
        }
    }
}
var headers = {
        'Authorization': 'Bearer CLOUDCONVERT API KEY'
    };

var options = {
  'method' : 'post',
  'contentType': 'application/json',
  'headers': headers,
  // Convert the JavaScript object to a JSON string.
  'payload' : JSON.stringify(data)
  };

 var response = JSON.parse(UrlFetchApp.fetch('https://api.cloudconvert.com/v2/jobs', options));

 var dataID = response.data.id;

  var options2= = {
  'method' : 'get',
  'contentType': 'application/json',
  'headers': headers,
  };
  
  // if the file is too big wait a few seconds
  // Utilities.sleep(3000);

  var urlStatus = 'https://api.cloudconvert.com/v2/jobs/'+dataID+'/wait'
  var conversionStatus = JSON.parse(UrlFetchApp.fetch(urlStatus, options2));
  Logger.log(conversionStatus.data.tasks[0].result.files);
 
}

参考:

https://cloudconvert.com/api/v2

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetch(String,Object)

https://developers.google.com/apps-script/reference/utilities/utilities?hl=en#sleep(Integer)