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, ";");