2017-07-24 1 views
3

Ich brauche ein Skript, das entpacken Sie die Dateien, die ich auf mein Google-Laufwerk hochgeladen habe und den Inhalt der Zip-Datei in meinem Google-Laufwerk zurück.Verwenden von Google App Script Entpacken Sie eine Datei aus Google Drive

Ich habe Probleme damit. Es läuft ohne Fehler, aber die hochgeladene Datei ist leer. Ich bin sehr neu in Google App Script, daher würde jede Hilfe sehr geschätzt werden. Vielen Dank.

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) 
    } 

Antwort

0

SpreadsheetApp.create erwartet einen String und es verwendet wird, neue Tabelle mit dem übergebenen String zu erstellen. Lesen Sie den folgenden Code, um die Datei zu entpacken und auf das Google-Laufwerk hochzuladen.

Edit 1: Die folgende Funktion lädt die entpackte Datei in ihrem nativen Format hoch.

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()) 
} 

Edit 2: Die folgenden Funktionen werden die entpackte Datei laden und in Google-Laufwerk Format

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) 
    } 
} 
+0

@Christopher habe ich aktualisiert, um die Antwort konvertieren! – Ritz

+1

Es funktioniert !! Du bist unglaublich, danke !!! –

Verwandte Themen