Leer archivos en directorio Drive con Apps Script

Una opción para integrar sistemas externos y leer los datos en planillas es mediante la suba de archivos a Google Drive. Si exportamos datos en CSV por ejemplo, se suben a una carpeta en Drive y luego podemos leer los archivos, podremos integrar distintos sistemas sin hacer cambios en los mismos. Similar a la lectura de mails pero con archivos.

Veamos un ejemplo de cómo leer una carpeta en Drive, listar los archivos y obtener datos de los mismos.

function leerDrive() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var data = [];
  
  var folder = DriveApp.getFolderById(folderID);//not placing actual id for privacy
  //var contents = folder.getFiles();
  var contents = folder.getFilesByType(MimeType.CSV);

  var fileID, file; 

  // Cada hoja de insumo, empresa mes, acumulamos data
  while(contents.hasNext()) {   

    file = contents.next();    
    fileID = file.getId();
    sheetName = file.getName();
    
    var temp = [
      fileID,
      sheetName,
    ];

    data.push(temp);
    
    var csvValues = Utilities.parseCsv(file.getBlob().getDataAsString(), ";");
    console.log(csvValues);

    Logger.log(data);

  }

  return data;
  
}

Actualizacion ante error de lectura de archivos subidos por Windows:

En algunas ocasiones se reporta un error de lectura de los contenidos de los archivos CSV subidos a Drive y que Apps Script no puede leer. Para corregir este error podemos eliminar caracteresa especiales antes del comando parseCsv:

// Pre procesamos el string del archivo manteniendo solo caracteres que nos interesan
// Eliminamos caracteres raros unicode
var csv = file.getBlob().getDataAsString('ISO-8859-1');
csv = csv.replace(/[^a-zA-Z0-9\-\.\,\;\nÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñ ]/g, "");

var values = Utilities.parseCsv(csv, ";");
twitterpinterest