From 226ebc8dddd2f2c59d0ee007ce7b87fd13e95054 Mon Sep 17 00:00:00 2001 From: EidanThen Date: Mon, 6 Jul 2026 20:58:29 +0000 Subject: [PATCH] Update glmway-workflow.json --- glmway-workflow.json | 532 ++++++++++++++++++++++++------------------- 1 file changed, 297 insertions(+), 235 deletions(-) diff --git a/glmway-workflow.json b/glmway-workflow.json index 28e90ec..700c590 100644 --- a/glmway-workflow.json +++ b/glmway-workflow.json @@ -1,6 +1,6 @@ { "$json": { - "updatedAt": "2026-07-03T15:29:04.744Z", + "updatedAt": "2026-07-06T20:58:21.467Z", "createdAt": "2026-06-08T13:50:12.174Z", "id": "F1iPg8hktNAebZua", "name": "GLMWay", @@ -791,8 +791,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.3, "position": [ - 2624, - -240 + 912, + -352 ], "id": "8a2be7cc-85ad-4e44-92a7-fe3f94df703f", "name": "Hay coordinador?" @@ -874,8 +874,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.3, "position": [ - 560, - -144 + 528, + -256 ], "id": "cb43a2bb-7743-4994-a7b2-209cd0934cd7", "name": "Entra hoy?" @@ -955,7 +955,7 @@ "typeVersion": 1, "position": [ 752, - -32 + -80 ], "id": "0a800bb8-d5f1-443e-b3b1-3ca9546eb28f", "name": "Insertar a inscritos (inactivo)", @@ -987,8 +987,8 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 2768, - -464 + 640, + -816 ], "typeVersion": 1, "id": "719365c8-8099-4108-a910-83b651d81181", @@ -1033,8 +1033,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - 2816, - -144 + 1088, + -192 ], "id": "09ce1f03-3dfb-4108-9d25-6c05ac622a6f", "name": "Alerta no hay coordinador RRHH" @@ -1108,7 +1108,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee').item.json.workEmail }}", "subject": "Entrenamiento #TheGLMWay", "emailType": "text", "message": "=Hola, GLMer!\n\nEste {{ $('Convertir fecha a espanol').item.json.fechaFormateada }} a las {{ $json.hora_convertida }} tenemos entrenamiento, y queremos transmitirte nuestra cultura, nuestro ADN y por qué somos diferentes al resto.\n\nTe esperamos puntual y con todas las ganas de aprender.\n\nNos vemos en el enlace!\n\n{{ $('Obtener sesiones español').item.json.enlace_reunion }}", @@ -1119,7 +1119,7 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.2, "position": [ - 2080, + 2656, -336 ], "id": "e6c3acf5-d54b-4e00-b7a9-74038d27e387", @@ -1134,7 +1134,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee').item.json.workEmail }}", "subject": "#TheGLMWay Training", "emailType": "text", "message": "=Hello, GLMer!\n\nThis {{ $('Convertir fecha a ingles').item.json.fechaFormateada }} at {{ $json.hora_convertida }} we have training, and we want to share our culture, our DNA, and what makes us different from the rest.\n\nWe expect you to be punctual and eager to learn.\n\nSee you at the link!\n\n{{ $('Obtener sesiones ingles').item.json.enlace_reunion }}", @@ -1145,7 +1145,7 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.2, "position": [ - 2080, + 2656, -160 ], "id": "f173c8d1-9311-405c-a7ee-164726df32f1", @@ -1210,7 +1210,7 @@ "parameters": { "content": "## Notificacion inicial\n\nEnvia notificacion de sesion en el primer dia de trabajo del empleado", "height": 608, - "width": 3360, + "width": 3424, "color": 6 }, "type": "n8n-nodes-base.stickyNote", @@ -1273,8 +1273,8 @@ "type": "n8n-nodes-base.googleCalendarTrigger", "typeVersion": 1, "position": [ - -592, - 3120 + -544, + 3552 ], "id": "35ec709a-30fd-4e3b-8492-cf6d8928e372", "name": "Prueba", @@ -1522,7 +1522,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee1').item.json.workEmail }}", "subject": "Entrenamiento #TheGLMWay", "emailType": "text", "message": "=Hola, GLMer!\n\nEste {{ $('Convertir fecha a espanol1').item.json.fechaFormateada }} a las {{ $json.hora_convertida }} tenemos entrenamiento, y queremos transmitirte nuestra cultura, nuestro ADN y por qué somos diferentes al resto.\n\nTe esperamos puntual y con todas las ganas de aprender.\n\nNos vemos en el enlace!\n\n{{ $('Obtener sesiones español1').item.json.enlace_reunion }}", @@ -1548,7 +1548,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee1').item.json.workEmail }}", "subject": "#TheGLMWay Training", "emailType": "text", "message": "=Hello, GLMer!\n\nThis {{ $('Convertir fecha a ingles1').item.json.fechaFormateada }} at {{ $json.hora_convertida }} we have training, and we want to share our culture, our DNA, and what makes us different from the rest.\n\nWe expect you to be punctual and eager to learn.\n\nSee you at the link!\n\n{{ $('Obtener sesiones ingles1').item.json.enlace_reunion }}", @@ -1600,7 +1600,7 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 752, + 1328, -256 ], "id": "b183c892-8822-4bc3-a92c-4410eac41a01", @@ -1817,8 +1817,8 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 2464, - -240 + 752, + -352 ], "id": "d565bfde-93eb-4b39-afc8-4b294c7e9df7", "name": "Obtener coordinador", @@ -2040,7 +2040,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 976, + 1552, -336 ], "id": "e8a65f36-8e8e-4135-b7a2-a7ef4617de2f", @@ -2063,7 +2063,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 976, + 1552, -160 ], "id": "971ae719-5692-4f87-9a57-2287ee44783d", @@ -2085,7 +2085,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1168, + 1744, -336 ], "id": "cb9e8a10-a1e7-40c7-8447-2379b0191a8f", @@ -2113,7 +2113,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1168, + 1744, -160 ], "id": "5ca790ee-4944-4868-98af-89837ac39422", @@ -2127,12 +2127,12 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1360, + 1936, -336 ], "id": "c2db5e62-7741-4ff2-ad31-71c108dd7386", @@ -2140,12 +2140,12 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1360, + 1936, -160 ], "id": "bde8fba9-0d6c-4299-8971-dcd8e0e740b4", @@ -2199,7 +2199,7 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?1').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?1').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -2212,7 +2212,7 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?1').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?1').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -2244,10 +2244,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado').item.json.hireDate }}" @@ -2275,6 +2271,9 @@ { "fieldId": "pais", "fieldValue": "={{ $('Get an employee').item.json.location }}" + }, + { + "fieldId": "coordinador_rrhh" } ] } @@ -2282,7 +2281,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1520, + 2096, -336 ], "id": "dcdef9fc-9c61-45dd-9604-56037eac4c31", @@ -2315,10 +2314,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado').item.json.hireDate }}" @@ -2346,6 +2341,9 @@ { "fieldId": "pais", "fieldValue": "={{ $('Get an employee').item.json.location }}" + }, + { + "fieldId": "coordinador_rrhh" } ] } @@ -2353,7 +2351,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1520, + 2096, -160 ], "id": "7530270a-b32e-419e-8fc5-b29fa07dda39", @@ -2876,7 +2874,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 3056, + 3440, -352 ], "id": "ca136518-b776-45ba-b1a2-ad5327dd4cca", @@ -2927,7 +2925,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3952, + 4336, -352 ], "id": "7c321f7d-bce9-447c-b94c-35f6967a48e3", @@ -2945,7 +2943,7 @@ "type": "n8n-nodes-base.wait", "typeVersion": 1.1, "position": [ - 3776, + 4160, -352 ], "id": "27531838-5dc7-4169-a08a-f4da93899580", @@ -2975,7 +2973,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3600, + 3984, -352 ], "id": "bd8cb535-6aa3-46df-9ca0-6efc0555f2e4", @@ -2996,7 +2994,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 3024, + 3408, -480 ], "typeVersion": 1, @@ -3250,7 +3248,7 @@ }, { "parameters": { - "url": "=https://meet.googleapis.com/v2/conferenceRecords/hFRcUdt3dvlZlJ6L1Wo6DxITOAIIigIgABgBCA/participants", + "url": "=https://meet.googleapis.com/v2/conferenceRecords/6nSLUwAKD6mX-LzgI_J7DxIXOAIIigIgABgBCA/participants", "authentication": "predefinedCredentialType", "nodeCredentialType": "googleOAuth2Api", "sendQuery": true, @@ -3294,7 +3292,7 @@ "type": "n8n-nodes-base.googleCalendar", "typeVersion": 1.3, "position": [ - 3248, + 3632, -352 ], "id": "b2b03ce6-6010-4e4f-be7a-d9040286e295", @@ -3313,7 +3311,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3424, + 3808, -352 ], "id": "73c39af9-bc01-4d97-81ee-846aff70b3a6", @@ -3332,7 +3330,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 3056, + 3440, -48 ], "id": "55a755d8-8b74-440f-93c6-8a1ecba4c666", @@ -3346,7 +3344,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 3024, + 3408, -160 ], "typeVersion": 1, @@ -3373,7 +3371,7 @@ "type": "n8n-nodes-base.googleCalendar", "typeVersion": 1.3, "position": [ - 4400, + 4784, -208 ], "id": "3c32f96e-cd34-4be4-8c24-b4be7a8f29d9", @@ -3406,7 +3404,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3232, + 3616, -48 ], "id": "73089147-ba1f-4fb4-ac17-d5670b263fd8", @@ -3444,7 +3442,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3568, + 3952, -48 ], "id": "231f396b-855a-4c50-8d6d-096018e6d2ac", @@ -3459,7 +3457,7 @@ "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ - 3392, + 3776, -48 ], "id": "e51bd2d5-22b5-46cf-b346-c1ba16bb5c34", @@ -3490,7 +3488,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 5200, + 5584, -304 ], "id": "3f4a0807-5f29-49cb-a851-41100e04f5bf", @@ -3505,7 +3503,7 @@ "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ - 5056, + 5440, -304 ], "id": "3ecbb0c7-f5f5-4644-9f42-8be9502e814d", @@ -3520,7 +3518,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 4912, + 5296, -304 ], "id": "a099259d-36e3-48b6-aa77-d8132f33f85e", @@ -3543,7 +3541,7 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 4768, + 5152, -304 ], "id": "456bcbe4-cc98-48fc-bcd2-40f8961934ae", @@ -3557,7 +3555,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 4192, + 4576, -480 ], "typeVersion": 1, @@ -3581,7 +3579,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 4240, + 4624, -288 ], "id": "6ef829bf-1d52-4093-bcc5-45d922393611", @@ -3608,7 +3606,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 4400, + 4784, -384 ], "id": "f1bf8c51-43cf-41d4-93c4-1a1d0a0dac7a", @@ -3628,7 +3626,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 4576, + 4960, -208 ], "id": "8f80d9ca-1e4b-4753-b482-df7b0fd24f61", @@ -4096,7 +4094,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 2272, + 2848, -336 ], "id": "4ab5f973-c2e1-410e-9212-8ed3b9d372e3", @@ -4127,7 +4125,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 2272, + 2848, -160 ], "id": "5e69165f-16a2-4f7a-ad48-d24c70f3c88b", @@ -4202,7 +4200,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1696, + 2272, -336 ], "id": "ad0bb609-e224-4956-bf20-0d624f4ef3ae", @@ -4215,7 +4213,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1696, + 2272, -160 ], "id": "a1ad0e55-59e3-405e-b75d-d092112e9151", @@ -4223,7 +4221,7 @@ }, { "parameters": { - "jsCode": "// Diccionario de meses inglés -> español\nconst meses = {\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre'\n};\n\nconst fecha = $('Calcular sesion mas cercana3').first().json.session.fecha_sesion;\n\nconst partes = fecha.trim().split(' ');\nconst dia = partes[0];\nconst mesIngles = partes[1].toLowerCase();\nconst mesEspanol = meses[mesIngles] || partes[1];\n\nconst fechaFormateada = `${mesEspanol} ${dia}`;\n\nreturn [\n {\n json: {\n fechaFormateada\n }\n }\n];" + "jsCode": "// Diccionario de meses inglés -> español\nconst meses = {\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre'\n};\n\nconst fecha = $('Calcular sesion mas cercana2').first().json.session.fecha_sesion;\n\nconst partes = fecha.trim().split(' ');\nconst dia = partes[0];\nconst mesIngles = partes[1].toLowerCase();\nconst mesEspanol = meses[mesIngles] || partes[1];\n\nconst fechaFormateada = `${mesEspanol} ${dia}`;\n\nreturn [\n {\n json: {\n fechaFormateada\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -4342,7 +4340,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1888, + 2464, -336 ], "id": "740373c9-0145-41f4-a4b6-9dbb84ffbdaa", @@ -4355,7 +4353,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1888, + 2464, -160 ], "id": "77da2dc7-546b-4ab7-a7c7-fa621196b2d0", @@ -4465,21 +4463,6 @@ } } }, - { - "parameters": { - "resource": "meeting", - "operation": "addToLiveMeeting", - "additionalFields": {} - }, - "type": "@firefliesai/n8n-nodes-fireflies.fireflies", - "typeVersion": 1, - "position": [ - -336, - 3440 - ], - "id": "6852b24e-9982-487d-a926-942f6d2bb7b3", - "name": "Add fred to a live meeting" - }, { "parameters": { "conditions": { @@ -4599,10 +4582,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee1').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado1').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado1').item.json.hireDate }}" @@ -4680,10 +4659,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee1').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado1').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado1').item.json.hireDate }}" @@ -4729,6 +4704,47 @@ "name": "Sofia test - Supabase account" } } + }, + { + "parameters": { + "resource": "audio", + "additionalFields": {} + }, + "type": "@firefliesai/n8n-nodes-fireflies.fireflies", + "typeVersion": 1, + "position": [ + -256, + 3616 + ], + "id": "14fa274e-6c75-4db5-bfdd-6fb4499f74bb", + "name": "Upload audio", + "credentials": { + "firefliesApi": { + "id": "3KMwcovPfZBeQOlm", + "name": "Eidan (Maximo) - Fireflies account" + } + } + }, + { + "parameters": { + "resource": "meeting", + "operation": "addToLiveMeeting", + "additionalFields": {} + }, + "type": "@firefliesai/n8n-nodes-fireflies.fireflies", + "typeVersion": 1, + "position": [ + -256, + 3424 + ], + "id": "6852b24e-9982-487d-a926-942f6d2bb7b3", + "name": "Add fred to a live meeting", + "credentials": { + "firefliesApi": { + "id": "3KMwcovPfZBeQOlm", + "name": "Eidan (Maximo) - Fireflies account" + } + } } ], "connections": { @@ -4869,7 +4885,7 @@ "main": [ [ { - "node": "Pais?", + "node": "Obtener coordinador", "type": "main", "index": 0 } @@ -4896,7 +4912,13 @@ }, "Hay coordinador?": { "main": [ - [], + [ + { + "node": "Pais?", + "type": "main", + "index": 0 + } + ], [ { "node": "Alerta no hay coordinador RRHH", @@ -5908,24 +5930,12 @@ }, "Registrar empleado a la sesion": { "main": [ - [ - { - "node": "Obtener coordinador", - "type": "main", - "index": 0 - } - ] + [] ] }, "Registrar empleado a la sesion1": { "main": [ - [ - { - "node": "Obtener coordinador", - "type": "main", - "index": 0 - } - ] + [] ] }, "Registrar empleado a la sesion2": { @@ -6179,6 +6189,17 @@ } ] ] + }, + "Alerta no hay coordinador RRHH": { + "main": [ + [ + { + "node": "Pais?", + "type": "main", + "index": 0 + } + ] + ] } }, "settings": { @@ -6203,19 +6224,19 @@ "recurrenceRules": [] }, "node:Comenzo evento ingles": { - "lastTimeChecked": "2026-07-03T15:28:29Z" + "lastTimeChecked": "2026-07-06T20:58:22Z" }, "node:Comenzo evento español": { - "lastTimeChecked": "2026-07-03T15:28:29Z" + "lastTimeChecked": "2026-07-06T20:58:23Z" }, "node:Termino evento español": { - "lastTimeChecked": "2026-07-03T15:28:29Z" + "lastTimeChecked": "2026-07-06T20:58:23Z" }, "node:Termino evento ingles": { - "lastTimeChecked": "2026-07-03T15:28:30Z" + "lastTimeChecked": "2026-07-06T20:58:23Z" }, "node:Prueba": { - "lastTimeChecked": "2026-07-03T15:28:30Z" + "lastTimeChecked": "2026-07-06T20:58:23Z" }, "node:Schedule Trigger2": { "recurrenceRules": [] @@ -6249,11 +6270,31 @@ "item": 0 } } + ], + "Schedule Trigger1": [ + { + "json": { + "timestamp": "2026-07-03T19:00:24.013-04:00", + "Readable date": "July 3rd 2026, 7:00:24 pm", + "Readable time": "7:00:24 pm", + "Day of week": "Friday", + "Year": "2026", + "Month": "July", + "Day of month": "03", + "Hour": "19", + "Minute": "00", + "Second": "24", + "Timezone": "America/Santo_Domingo (UTC-04:00)" + }, + "pairedItem": { + "item": 0 + } + } ] }, - "versionId": "035c48ce-6ce9-4bca-a5ef-cf6e51360ce3", - "activeVersionId": "035c48ce-6ce9-4bca-a5ef-cf6e51360ce3", - "versionCounter": 4224, + "versionId": "e6f9b5db-0927-4fb3-8518-2c4a10541c76", + "activeVersionId": "e6f9b5db-0927-4fb3-8518-2c4a10541c76", + "versionCounter": 4357, "triggerCount": 13, "shared": [ { @@ -6276,9 +6317,9 @@ ], "tags": [], "activeVersion": { - "updatedAt": "2026-07-03T15:28:30.000Z", - "createdAt": "2026-07-03T15:27:54.655Z", - "versionId": "035c48ce-6ce9-4bca-a5ef-cf6e51360ce3", + "updatedAt": "2026-07-06T20:58:23.000Z", + "createdAt": "2026-07-06T20:58:21.471Z", + "versionId": "e6f9b5db-0927-4fb3-8518-2c4a10541c76", "workflowId": "F1iPg8hktNAebZua", "nodes": [ { @@ -7064,8 +7105,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.3, "position": [ - 2624, - -240 + 912, + -352 ], "id": "8a2be7cc-85ad-4e44-92a7-fe3f94df703f", "name": "Hay coordinador?" @@ -7147,8 +7188,8 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.3, "position": [ - 560, - -144 + 528, + -256 ], "id": "cb43a2bb-7743-4994-a7b2-209cd0934cd7", "name": "Entra hoy?" @@ -7228,7 +7269,7 @@ "typeVersion": 1, "position": [ 752, - -32 + -80 ], "id": "0a800bb8-d5f1-443e-b3b1-3ca9546eb28f", "name": "Insertar a inscritos (inactivo)", @@ -7260,8 +7301,8 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 2768, - -464 + 640, + -816 ], "typeVersion": 1, "id": "719365c8-8099-4108-a910-83b651d81181", @@ -7306,8 +7347,8 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ - 2816, - -144 + 1088, + -192 ], "id": "09ce1f03-3dfb-4108-9d25-6c05ac622a6f", "name": "Alerta no hay coordinador RRHH" @@ -7381,7 +7422,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee').item.json.workEmail }}", "subject": "Entrenamiento #TheGLMWay", "emailType": "text", "message": "=Hola, GLMer!\n\nEste {{ $('Convertir fecha a espanol').item.json.fechaFormateada }} a las {{ $json.hora_convertida }} tenemos entrenamiento, y queremos transmitirte nuestra cultura, nuestro ADN y por qué somos diferentes al resto.\n\nTe esperamos puntual y con todas las ganas de aprender.\n\nNos vemos en el enlace!\n\n{{ $('Obtener sesiones español').item.json.enlace_reunion }}", @@ -7392,7 +7433,7 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.2, "position": [ - 2080, + 2656, -336 ], "id": "e6c3acf5-d54b-4e00-b7a9-74038d27e387", @@ -7407,7 +7448,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee').item.json.workEmail }}", "subject": "#TheGLMWay Training", "emailType": "text", "message": "=Hello, GLMer!\n\nThis {{ $('Convertir fecha a ingles').item.json.fechaFormateada }} at {{ $json.hora_convertida }} we have training, and we want to share our culture, our DNA, and what makes us different from the rest.\n\nWe expect you to be punctual and eager to learn.\n\nSee you at the link!\n\n{{ $('Obtener sesiones ingles').item.json.enlace_reunion }}", @@ -7418,7 +7459,7 @@ "type": "n8n-nodes-base.gmail", "typeVersion": 2.2, "position": [ - 2080, + 2656, -160 ], "id": "f173c8d1-9311-405c-a7ee-164726df32f1", @@ -7483,7 +7524,7 @@ "parameters": { "content": "## Notificacion inicial\n\nEnvia notificacion de sesion en el primer dia de trabajo del empleado", "height": 608, - "width": 3360, + "width": 3424, "color": 6 }, "type": "n8n-nodes-base.stickyNote", @@ -7546,8 +7587,8 @@ "type": "n8n-nodes-base.googleCalendarTrigger", "typeVersion": 1, "position": [ - -592, - 3120 + -544, + 3552 ], "id": "35ec709a-30fd-4e3b-8492-cf6d8928e372", "name": "Prueba", @@ -7795,7 +7836,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee1').item.json.workEmail }}", "subject": "Entrenamiento #TheGLMWay", "emailType": "text", "message": "=Hola, GLMer!\n\nEste {{ $('Convertir fecha a espanol1').item.json.fechaFormateada }} a las {{ $json.hora_convertida }} tenemos entrenamiento, y queremos transmitirte nuestra cultura, nuestro ADN y por qué somos diferentes al resto.\n\nTe esperamos puntual y con todas las ganas de aprender.\n\nNos vemos en el enlace!\n\n{{ $('Obtener sesiones español1').item.json.enlace_reunion }}", @@ -7821,7 +7862,7 @@ }, { "parameters": { - "sendTo": "=eidan.then14@gmail.com", + "sendTo": "={{ $('Get an employee1').item.json.workEmail }}", "subject": "#TheGLMWay Training", "emailType": "text", "message": "=Hello, GLMer!\n\nThis {{ $('Convertir fecha a ingles1').item.json.fechaFormateada }} at {{ $json.hora_convertida }} we have training, and we want to share our culture, our DNA, and what makes us different from the rest.\n\nWe expect you to be punctual and eager to learn.\n\nSee you at the link!\n\n{{ $('Obtener sesiones ingles1').item.json.enlace_reunion }}", @@ -7873,7 +7914,7 @@ "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ - 752, + 1328, -256 ], "id": "b183c892-8822-4bc3-a92c-4410eac41a01", @@ -8090,8 +8131,8 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 2464, - -240 + 752, + -352 ], "id": "d565bfde-93eb-4b39-afc8-4b294c7e9df7", "name": "Obtener coordinador", @@ -8313,7 +8354,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 976, + 1552, -336 ], "id": "e8a65f36-8e8e-4135-b7a2-a7ef4617de2f", @@ -8336,7 +8377,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 976, + 1552, -160 ], "id": "971ae719-5692-4f87-9a57-2287ee44783d", @@ -8358,7 +8399,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1168, + 1744, -336 ], "id": "cb9e8a10-a1e7-40c7-8447-2379b0191a8f", @@ -8386,7 +8427,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1168, + 1744, -160 ], "id": "5ca790ee-4944-4868-98af-89837ac39422", @@ -8400,12 +8441,12 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1360, + 1936, -336 ], "id": "c2db5e62-7741-4ff2-ad31-71c108dd7386", @@ -8413,12 +8454,12 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1360, + 1936, -160 ], "id": "bde8fba9-0d6c-4299-8971-dcd8e0e740b4", @@ -8472,7 +8513,7 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?1').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?1').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -8485,7 +8526,7 @@ }, { "parameters": { - "jsCode": "const hireDate = new Date(\n $('Entra hoy?1').first().json.hireDate\n);\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const currentYear = new Date().getFullYear();\n return new Date(`${month} ${day}, ${currentYear}`);\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= hireDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) - parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" + "jsCode": "const hireDate = new Date($('Entra hoy?1').first().json.hireDate);\nconst today = new Date();\nconst sessions = $input.all();\n\n// Eliminar horas para comparar solo fechas\nhireDate.setHours(0, 0, 0, 0);\ntoday.setHours(0, 0, 0, 0);\n\n// La búsqueda comienza desde la fecha más reciente\nconst searchDate = hireDate > today ? hireDate : today;\n\n// Helper para parsear \"14 January\" → Date\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n\n const [day, month] = dateStr.split(' ');\n const currentYear = today.getFullYear();\n\n const date = new Date(`${month} ${day}, ${currentYear}`);\n date.setHours(0, 0, 0, 0);\n\n return date;\n}\n\nconst validSessions = sessions.filter(item => {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n return sessionDate && sessionDate >= searchDate;\n});\n\nvalidSessions.sort((a, b) =>\n parseSessionDate(a.json.fecha_sesion) -\n parseSessionDate(b.json.fecha_sesion)\n);\n\nconst nearestSession = validSessions[0];\n\nreturn [\n {\n json: {\n hireDate: hireDate.toISOString().split('T')[0],\n today: today.toISOString().split('T')[0],\n searchDate: searchDate.toISOString().split('T')[0],\n foundSession: !!nearestSession,\n session: nearestSession?.json ?? null\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -8517,10 +8558,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado').item.json.hireDate }}" @@ -8548,6 +8585,9 @@ { "fieldId": "pais", "fieldValue": "={{ $('Get an employee').item.json.location }}" + }, + { + "fieldId": "coordinador_rrhh" } ] } @@ -8555,7 +8595,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1520, + 2096, -336 ], "id": "dcdef9fc-9c61-45dd-9604-56037eac4c31", @@ -8588,10 +8628,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado').item.json.hireDate }}" @@ -8619,6 +8655,9 @@ { "fieldId": "pais", "fieldValue": "={{ $('Get an employee').item.json.location }}" + }, + { + "fieldId": "coordinador_rrhh" } ] } @@ -8626,7 +8665,7 @@ "type": "n8n-nodes-base.supabase", "typeVersion": 1, "position": [ - 1520, + 2096, -160 ], "id": "7530270a-b32e-419e-8fc5-b29fa07dda39", @@ -9149,7 +9188,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 3056, + 3440, -352 ], "id": "ca136518-b776-45ba-b1a2-ad5327dd4cca", @@ -9200,7 +9239,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3952, + 4336, -352 ], "id": "7c321f7d-bce9-447c-b94c-35f6967a48e3", @@ -9218,7 +9257,7 @@ "type": "n8n-nodes-base.wait", "typeVersion": 1.1, "position": [ - 3776, + 4160, -352 ], "id": "27531838-5dc7-4169-a08a-f4da93899580", @@ -9248,7 +9287,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3600, + 3984, -352 ], "id": "bd8cb535-6aa3-46df-9ca0-6efc0555f2e4", @@ -9269,7 +9308,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 3024, + 3408, -480 ], "typeVersion": 1, @@ -9523,7 +9562,7 @@ }, { "parameters": { - "url": "=https://meet.googleapis.com/v2/conferenceRecords/hFRcUdt3dvlZlJ6L1Wo6DxITOAIIigIgABgBCA/participants", + "url": "=https://meet.googleapis.com/v2/conferenceRecords/6nSLUwAKD6mX-LzgI_J7DxIXOAIIigIgABgBCA/participants", "authentication": "predefinedCredentialType", "nodeCredentialType": "googleOAuth2Api", "sendQuery": true, @@ -9567,7 +9606,7 @@ "type": "n8n-nodes-base.googleCalendar", "typeVersion": 1.3, "position": [ - 3248, + 3632, -352 ], "id": "b2b03ce6-6010-4e4f-be7a-d9040286e295", @@ -9586,7 +9625,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 3424, + 3808, -352 ], "id": "73c39af9-bc01-4d97-81ee-846aff70b3a6", @@ -9605,7 +9644,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 3056, + 3440, -48 ], "id": "55a755d8-8b74-440f-93c6-8a1ecba4c666", @@ -9619,7 +9658,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 3024, + 3408, -160 ], "typeVersion": 1, @@ -9646,7 +9685,7 @@ "type": "n8n-nodes-base.googleCalendar", "typeVersion": 1.3, "position": [ - 4400, + 4784, -208 ], "id": "3c32f96e-cd34-4be4-8c24-b4be7a8f29d9", @@ -9679,7 +9718,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 3232, + 3616, -48 ], "id": "73089147-ba1f-4fb4-ac17-d5670b263fd8", @@ -9717,7 +9756,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 3568, + 3952, -48 ], "id": "231f396b-855a-4c50-8d6d-096018e6d2ac", @@ -9732,7 +9771,7 @@ "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ - 3392, + 3776, -48 ], "id": "e51bd2d5-22b5-46cf-b346-c1ba16bb5c34", @@ -9763,7 +9802,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 5200, + 5584, -304 ], "id": "3f4a0807-5f29-49cb-a851-41100e04f5bf", @@ -9778,7 +9817,7 @@ "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ - 5056, + 5440, -304 ], "id": "3ecbb0c7-f5f5-4644-9f42-8be9502e814d", @@ -9793,7 +9832,7 @@ "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ - 4912, + 5296, -304 ], "id": "a099259d-36e3-48b6-aa77-d8132f33f85e", @@ -9816,7 +9855,7 @@ "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ - 4768, + 5152, -304 ], "id": "456bcbe4-cc98-48fc-bcd2-40f8961934ae", @@ -9830,7 +9869,7 @@ }, "type": "n8n-nodes-base.stickyNote", "position": [ - 4192, + 4576, -480 ], "typeVersion": 1, @@ -9854,7 +9893,7 @@ "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.3, "position": [ - 4240, + 4624, -288 ], "id": "6ef829bf-1d52-4093-bcc5-45d922393611", @@ -9881,7 +9920,7 @@ "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ - 4400, + 4784, -384 ], "id": "f1bf8c51-43cf-41d4-93c4-1a1d0a0dac7a", @@ -9901,7 +9940,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 4576, + 4960, -208 ], "id": "8f80d9ca-1e4b-4753-b482-df7b0fd24f61", @@ -10369,7 +10408,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 2272, + 2848, -336 ], "id": "4ab5f973-c2e1-410e-9212-8ed3b9d372e3", @@ -10400,7 +10439,7 @@ "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.4, "position": [ - 2272, + 2848, -160 ], "id": "5e69165f-16a2-4f7a-ad48-d24c70f3c88b", @@ -10475,7 +10514,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1696, + 2272, -336 ], "id": "ad0bb609-e224-4956-bf20-0d624f4ef3ae", @@ -10488,7 +10527,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1696, + 2272, -160 ], "id": "a1ad0e55-59e3-405e-b75d-d092112e9151", @@ -10496,7 +10535,7 @@ }, { "parameters": { - "jsCode": "// Diccionario de meses inglés -> español\nconst meses = {\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre'\n};\n\nconst fecha = $('Calcular sesion mas cercana3').first().json.session.fecha_sesion;\n\nconst partes = fecha.trim().split(' ');\nconst dia = partes[0];\nconst mesIngles = partes[1].toLowerCase();\nconst mesEspanol = meses[mesIngles] || partes[1];\n\nconst fechaFormateada = `${mesEspanol} ${dia}`;\n\nreturn [\n {\n json: {\n fechaFormateada\n }\n }\n];" + "jsCode": "// Diccionario de meses inglés -> español\nconst meses = {\n january: 'Enero',\n february: 'Febrero',\n march: 'Marzo',\n april: 'Abril',\n may: 'Mayo',\n june: 'Junio',\n july: 'Julio',\n august: 'Agosto',\n september: 'Septiembre',\n october: 'Octubre',\n november: 'Noviembre',\n december: 'Diciembre'\n};\n\nconst fecha = $('Calcular sesion mas cercana2').first().json.session.fecha_sesion;\n\nconst partes = fecha.trim().split(' ');\nconst dia = partes[0];\nconst mesIngles = partes[1].toLowerCase();\nconst mesEspanol = meses[mesIngles] || partes[1];\n\nconst fechaFormateada = `${mesEspanol} ${dia}`;\n\nreturn [\n {\n json: {\n fechaFormateada\n }\n }\n];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, @@ -10615,7 +10654,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1888, + 2464, -336 ], "id": "740373c9-0145-41f4-a4b6-9dbb84ffbdaa", @@ -10628,7 +10667,7 @@ "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ - 1888, + 2464, -160 ], "id": "77da2dc7-546b-4ab7-a7c7-fa621196b2d0", @@ -10738,21 +10777,6 @@ } } }, - { - "parameters": { - "resource": "meeting", - "operation": "addToLiveMeeting", - "additionalFields": {} - }, - "type": "@firefliesai/n8n-nodes-fireflies.fireflies", - "typeVersion": 1, - "position": [ - -336, - 3440 - ], - "id": "6852b24e-9982-487d-a926-942f6d2bb7b3", - "name": "Add fred to a live meeting" - }, { "parameters": { "conditions": { @@ -10872,10 +10896,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee1').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado1').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado1').item.json.hireDate }}" @@ -10953,10 +10973,6 @@ "fieldId": "departamento", "fieldValue": "={{ $('Get an employee1').item.json.department }}" }, - { - "fieldId": "supervisor_id", - "fieldValue": "={{ $('Informacion extra del empleado1').item.json.supervisorEId }}" - }, { "fieldId": "fecha_ingreso", "fieldValue": "={{ $('Informacion extra del empleado1').item.json.hireDate }}" @@ -11002,6 +11018,47 @@ "name": "Sofia test - Supabase account" } } + }, + { + "parameters": { + "resource": "audio", + "additionalFields": {} + }, + "type": "@firefliesai/n8n-nodes-fireflies.fireflies", + "typeVersion": 1, + "position": [ + -256, + 3616 + ], + "id": "14fa274e-6c75-4db5-bfdd-6fb4499f74bb", + "name": "Upload audio", + "credentials": { + "firefliesApi": { + "id": "3KMwcovPfZBeQOlm", + "name": "Eidan (Maximo) - Fireflies account" + } + } + }, + { + "parameters": { + "resource": "meeting", + "operation": "addToLiveMeeting", + "additionalFields": {} + }, + "type": "@firefliesai/n8n-nodes-fireflies.fireflies", + "typeVersion": 1, + "position": [ + -256, + 3424 + ], + "id": "6852b24e-9982-487d-a926-942f6d2bb7b3", + "name": "Add fred to a live meeting", + "credentials": { + "firefliesApi": { + "id": "3KMwcovPfZBeQOlm", + "name": "Eidan (Maximo) - Fireflies account" + } + } } ], "connections": { @@ -11142,7 +11199,7 @@ "main": [ [ { - "node": "Pais?", + "node": "Obtener coordinador", "type": "main", "index": 0 } @@ -11169,7 +11226,13 @@ }, "Hay coordinador?": { "main": [ - [], + [ + { + "node": "Pais?", + "type": "main", + "index": 0 + } + ], [ { "node": "Alerta no hay coordinador RRHH", @@ -12181,24 +12244,12 @@ }, "Registrar empleado a la sesion": { "main": [ - [ - { - "node": "Obtener coordinador", - "type": "main", - "index": 0 - } - ] + [] ] }, "Registrar empleado a la sesion1": { "main": [ - [ - { - "node": "Obtener coordinador", - "type": "main", - "index": 0 - } - ] + [] ] }, "Registrar empleado a la sesion2": { @@ -12452,18 +12503,29 @@ } ] ] + }, + "Alerta no hay coordinador RRHH": { + "main": [ + [ + { + "node": "Pais?", + "type": "main", + "index": 0 + } + ] + ] } }, "authors": "Eidan Then", - "name": "Version 035c48ce", + "name": "Version e6f9b5db", "description": "", - "autosaved": true, + "autosaved": false, "workflowPublishHistory": [ { - "createdAt": "2026-07-03T15:28:30.414Z", - "id": 2358, + "createdAt": "2026-07-06T20:58:23.622Z", + "id": 2559, "workflowId": "F1iPg8hktNAebZua", - "versionId": "035c48ce-6ce9-4bca-a5ef-cf6e51360ce3", + "versionId": "e6f9b5db-0927-4fb3-8518-2c4a10541c76", "event": "activated", "userId": "de14e7e5-491b-4983-abb2-f88af42e92fd" }