Resumen del Problema
El usuario desea trabajar con un archivo CSV delimitado por ;
y que contiene comas en algunos campos. Sin embargo, al usar la función Utilities.parseCsv(csv, ";")
de Google Apps Script (GAS), el CSV también se está separando por comas, lo que interfiere con el procesamiento del archivo.
Preguntas
-
¿Por qué se está separando por
,
si estoy indicando;
?- El problema radica en el formato de los campos. En CSV, los campos que contienen comas deben estar encerrados entre comillas. En este caso, el campo
"SEPA-Dauerauftrag an"
está correctamente delimitado, pero el campoMaier, Herbert
no tiene comillas, lo que hace que la funciónparseCsv
lo considere como dos campos separados.
- El problema radica en el formato de los campos. En CSV, los campos que contienen comas deben estar encerrados entre comillas. En este caso, el campo
- ¿Cómo puedo solucionar el problema?
- Para resolver este problema, se debe asegurar que todos los campos que contengan comas estén correctamente delimitados con comillas. En el ejemplo proporcionado, cambiar
Maier, Herbert
a"Maier, Herbert"
permitirá que la funciónparseCsv
reconozca el campo correctamente como uno solo.
- Para resolver este problema, se debe asegurar que todos los campos que contengan comas estén correctamente delimitados con comillas. En el ejemplo proporcionado, cambiar
Código Sugerido
Si es posible, modifique el archivo CSV para que se vea así:
01.02.2018;01.02.2018;"SEPA-Dauerauftrag an";"Maier, Herbert";RINP Dauerauftrag Miete Kräpelinstr. 61;DE45700100800225067803;PBNKDEFFXXX;;;;;;;;;-900,00;;EUR
Uso de la Función
Después de realizar la modificación, el código de GAS debería funcionar correctamente y separar los campos usando solo ;
, sin dividir por las comas dentro de los campos entre comillas.
function importCSVFromGoogleDrive() {
var ss = SpreadsheetApp.openById('<wb id>');
var outputSheet = ss.getSheetByName('import');
var fileIterator = DriveApp.getFilesByName("Kontoumsaetze_220_320895600_20180728_155842_DEV.csv");
var csv = fileIterator.next().getBlob().getDataAsString('ISO-8859-1');
Logger.log(csv);
var csvData = Utilities.parseCsv(csv, ";");
Logger.log("-------------");
Logger.log(csvData);
}
Conclusión
Asegurarse de que los campos que contienen comas estén correctamente encerrados en comillas resolverá el problema de separación en el archivo CSV. Esto garantizará que la función parseCsv
interprete correctamente los datos y que el programa funcione como se espera.