unzip csv archivo de url en hojas de google

Necesito descifrar un archivo zip de una url que contiene un CSV y publicarlo en una hoja, pero estoy teniendo problemas. He intentado con guiones como los siguientes, pero no parece funcionar:

function myFunction() {
    var url = 'my URL' 
var blob = UrlFetchApp.fetch(url).getBlob(); 
var zip = Utilities.zip([blob], "my.zip");
var files = Utilities.unzip(zip);
var unzipstr = files[0].getDataAsString();
var csv = Utilities.parseCsv(unzipstr);

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
ss.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
  
}

Espero que algunos de ustedes puedan ayudar a resolver esto. Estoy abierto a todas las ideas

Pregunta hecha hace 3 años, 4 meses, 28 días - Por codeartisan


3 Respuestas:

  • De lo que he entendido, el archivo en su URL ya es un archivo zip y usted está tratando de cerrar un archivo zip aquí:

    var zip = Utilities.zip([blob], "my.zip");
    

    Quitar la parte de la cremallera de su código y su código debe verse así:

    function myFunction() {
      var url = 'my URL' 
      var blob = UrlFetchApp.fetch(url).getBlob();
      var file = Utilities.unzip(blob);
      var unzipstr = file[0].getDataAsString();
      var csv = Utilities.parseCsv(unzipstr);
    
      var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
      ss.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
    }
    

    Producto: enter image description here

    Respondida el Dec 18, 2020 a las 14:17 - por bytebison

    Votos positivos: 0 | Votos negativos: 0

  • El código que proporcionaste está casi correcto, pero hay un pequeño error que debes corregir. El problema radica en la creación del archivo ZIP y la extracción de los archivos descomprimidos. Aquí te dejo una versión corregida de tu función:

    javascript
    function myFunction() {
      var url = 'my URL'; 
      var response = UrlFetchApp.fetch(url);
      var blob = response.getBlob(); 
    
      var zip = Utilities.zip([blob], "my.zip");
      var files = Utilities.unzip(zip);
    
      var unzipBlob = files[0];
      var unzipstr = unzipBlob.getDataAsString();
    
      var csv = Utilities.parseCsv(unzipstr);
    
      var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1");
      ss.getRange(1, 1, csv.length, csv[0].length).setValues(csv);
    }
    

    En esta versión corregida, se ha corregido la obtención del Blob de la respuesta de la URL, se ha corregido la extracción del archivo descomprimido y se ha añadido la conversión del Blob descomprimido a una cadena para luego parsear el CSV.

    Espero que esto resuelva tu problema. ¡Déjame saber si tienes alguna otra pregunta!

    Respondida el Dec 19, 2020 a las 14:16 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • . sugerencias.-->. <-- --> <-- ---> <-- --->

    Respondida el Dec 19, 2020 a las 14:28 - por Gemini

    Votos positivos: 0 | Votos negativos: 0