使用Google App Script从Google Drive解压文件

8
我需要一个脚本,可以解压我上传到谷歌云端硬盘的文件,并将zip文件的内容放回到我的谷歌云端硬盘中。
我遇到了麻烦。它可以正常运行,但上传的文件是空的。我对Google App Script非常陌生,所以非常感谢任何帮助。谢谢。
function unZipIt() {
  var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0')
  var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip')
  var fileBlob = theFile.next().getBlob()

  fileBlob.setContentType("application/zip")

  var unZippedfile = Utilities.unzip(fileBlob)
  var fileId = SpreadsheetApp.create(unZippedfile).getId();  
  var file = DriveApp.getFileById(fileId);
  DriveApp.addFile(file)
  }
1个回答

8

SpreadsheetApp.create接受一个字符串参数,并用该参数创建一个新的电子表格。请参考下面的代码,解压并上传文件到Google Drive。

编辑1:下面的函数将以原生格式上传未压缩的文件。

function unZipIt() {
  var theFolder = DriveApp.getFolderById('0B9jgHw-WmzvfRS1ZZEhTc3Byak0');
  var theFile = theFolder.getFilesByName('Dock to Stock Weekly_Dock to Stock AMP.zip');
  var fileBlob = theFile.next().getBlob();
  fileBlob.setContentType("application/zip");
  var unZippedfile = Utilities.unzip(fileBlob);
  var newDriveFile = DriveApp.createFile(unZippedfile[0]);
  Logger.log(newDriveFile.getId())
}

编辑2: 下列函数将上传未压缩的文件并将其转换为 Google Drive 格式

function unZipIt() {
  var theFolder = DriveApp.getFolderById('0B5JsAY8jN1CoWnhxU0Izemp6WW8');
  var theFile = theFolder.getFilesByName('test.zip');
  var fileBlob = theFile.next().getBlob();
  fileBlob.setContentType("application/zip");
  var unZippedfile = Utilities.unzip(fileBlob);
  var newDriveFile = DriveApp.createFile(unZippedfile[0]);
  convertToGoogleDocs(newDriveFile.getId())
}

function convertToGoogleDocs(fileId) {
  try{
    var originalFile = DriveApp.getFileById(fileId);
    var uploadFile = JSON.parse(UrlFetchApp.fetch(
      "https://www.googleapis.com/upload/drive/v2/files?uploadType=media&convert=true", 
      {
        method: "POST",
        contentType: originalFile.getMimeType(),
        payload: originalFile.getBlob().getBytes(),
        headers: {
          "Authorization" : "Bearer " + ScriptApp.getOAuthToken()
        },
        muteHttpExceptions: true
      }
    ).getContentText());

    // Remove the file extension from the new google file name
    var googleFileName = originalFile.setName(originalFile.getName().substr(0, originalFile.getName().lastIndexOf(".")));

    // Update the name of the Google file created from the original file
    DriveApp.getFileById(uploadFile.id).setName(googleFileName);
    var files = DriveApp.getFileById(uploadFile.id);
  }
   catch(e){
      Logger.log(e)
   }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接