Gestión Automática de Facturas en Correo
Copiar
Organiza automáticamente los correos con adjuntos en una carpeta llamada "facturas". Configura filtros en tu correo para mover mensajes con archivos PDF o relevantes a esta carpeta. Usa n8n para procesarlos, sanitizar nombres de archivos y guardarlos en Google Drive u otro destino, simplificando su gestión y almacenamiento. Ideal para mantener tus facturas ordenadas y accesibles sin esfuerzo manual.
Creado: 2024-12-04
3 nodos
{
"name": "Descargar Gastos",
"nodes": [
{
"parameters": {
"mailbox": "facturas",
"format": "resolved",
"options": {
"customEmailConfig": "[\"ALL\"]",
"forceReconnect": 60
}
},
"name": "IMAP Email",
"type": "n8n-nodes-base.emailReadImap",
"position": [
460,
460
],
"typeVersion": 1,
"id": "394b3465-784b-44c8-899a-ffcce268ab83",
"credentials": {
"imap": {
"id": "Q6ks9addEWFBTLcJ",
"name": "tuxed@redaven.com"
}
}
},
{
"parameters": {
"jsCode": "const _ = require('lodash');\n\nconst sanitizar = (str) =>\n _.chain(str)\n .replace(/[^A-Za-z0-9&.-]/g, '-') // sanitizar utilizando una lista blanca de caracteres permitidos\n .replace(/-(?=-)/g, '') // eliminar guiones repetidos - https://regexr.com/6ag8h\n .trim('-') // eliminar guiones al inicio o al final\n .truncate({\n length: 60,\n omission: '-', // si la cadena termina con '-', sabr\u00e1s que fue truncada\n })\n .value();\n\nconst resultado = _.flatMap(items.map((item) => {\n //console.log({ item });\n\n // Mapea cada adjunto a un elemento separado\n return _.values(item.binary).map((archivo) => {\n console.log('Guardando adjunto:', archivo.fileName, 'de:', ...item.json.from.value);\n\n // Dividir el nombre del archivo y su extensi\u00f3n\n const partes_nombre_archivo = archivo.fileName.split('.');\n const extension = partes_nombre_archivo.pop(); // Eliminar y almacenar la extensi\u00f3n\n const nombre_principal = partes_nombre_archivo.join('.');\n const nombreArchivoSanitizado = sanitizar(nombre_principal) + '.' + extension;\n\n archivo.fileName = nombreArchivoSanitizado;\n\n return {\n json: {\n from: sanitizar(item.json.from.value[0].name),\n date: sanitizar(new Date(item.json.date).toISOString().split('T')[0]), // obtener solo la fecha \"2020-01-01\"\n },\n binary: { archivo }, // Envolver 'archivo' en un objeto\n };\n });\n}));\n\n//console.log(resultado);\nreturn resultado;\n"
},
"id": "b9809837-bf8c-4116-a0f4-077dfe24eecc",
"name": "Code",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
720,
460
]
},
{
"parameters": {
"inputDataFieldName": "file",
"name": "={{$json[\"date\"]}}_{{$json[\"from\"]}}_{{$binary.file.fileName}}",
"driveId": {
"__rl": true,
"value": "My Drive",
"mode": "list",
"cachedResultName": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive"
},
"folderId": {
"__rl": true,
"value": "1AKcQ9FFJOALFBNH_brooZBmmADeDvQHj",
"mode": "list",
"cachedResultName": "NIMBOX_Facturas",
"cachedResultUrl": "https://drive.google.com/drive/folders/1AKcQ9FFJOALFBNH_brooZBmmADeDvQHj"
},
"options": {}
},
"id": "2191fbce-1ec5-4625-a824-5522513585ca",
"name": "Google Drive",
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
980,
460
],
"credentials": {
"googleDriveOAuth2Api": {
"id": "BIK7vO1gV2qnq0qt",
"name": "Google Drive account"
}
}
}
],
"pinData": {},
"connections": {
"IMAP Email": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"Code": {
"main": [
[
{
"node": "Google Drive",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "af74d77d-0a9c-4fab-b697-1cacb57fd5c6",
"meta": {
"instanceId": "48e98d95aab2af437c32c405e45972f4530dc31ea677ecacdd27272a056e4d7b"
},
"id": "AyIKUNLcyp0Ye2cg",
"tags": []
}