diff --git a/glmway-workflow.json b/glmway-workflow.json
index 6711d03..ae967d1 100644
--- a/glmway-workflow.json
+++ b/glmway-workflow.json
@@ -1,6 +1,6 @@
{
"$json": {
- "updatedAt": "2026-07-27T18:59:44.632Z",
+ "updatedAt": "2026-07-27T21:54:31.864Z",
"createdAt": "2026-06-08T13:50:12.174Z",
"id": "F1iPg8hktNAebZua",
"name": "GLMWay",
@@ -228,109 +228,6 @@
"id": "30ffb25f-3ad7-465d-9630-887828df95f6",
"name": "Code in JavaScript4"
},
- {
- "parameters": {
- "url": "=https://glm.bamboohr.com/api/v1/employees/{{ $json.supervisorEId }}?fields=displayName,workEmail,status,supervisorEmail,location,jobTitle,department,",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 2608,
- -960
- ],
- "id": "a34b5746-bdbc-4016-bffc-f953b5c0e7be",
- "name": "Informacion del supervisor",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
- {
- "parameters": {
- "method": "POST",
- "url": "=https://api.bamboohr.com/api/gateway.php/glm/v1/reports/custom",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "{\n \"title\": \"Employees\",\n \"fields\": [\n \"id\",\n \"firstName\",\n \"lastName\",\n \"hireDate\",\n \"department\",\n \"jobTitle\"\n ]\n}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 1280,
- -1408
- ],
- "id": "a52ef26c-a5d6-4bb5-9a99-61fa25206105",
- "name": "Informacion del supervisor1",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
- {
- "parameters": {
- "url": "=https://glm.bamboohr.com/api/v1/employees/50743?fields=displayName,mobilePhone,workPhone,workEmail,status,employeeNumber,supervisor,supervisorEmail,location,jobTitle,department,hireDate,supervisorEId",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 1632,
- -1344
- ],
- "id": "0088cd80-6150-4577-89a9-b28b06fea6b4",
- "name": "Informacion del empleado1",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
{
"parameters": {
"operation": "get",
@@ -352,137 +249,6 @@
}
}
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 3 }) }}",
- "options": {
- "query": "Entrenamiento"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2656,
- -784
- ],
- "id": "901ca3ad-1e76-41fe-a1ff-a55b0f5c1ea2",
- "name": "Get many events1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1872,
- -688
- ],
- "id": "2cd687f2-a8b5-4c46-854a-4f60b4d7107f",
- "name": "Entrenamiento español",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1872,
- -864
- ],
- "id": "01099730-b224-4b81-98cc-b924e2b02367",
- "name": "Entrenamiento ingles",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1zQabzR4ZpQVqYvJ0Cv5QTQ2TZRl9TahBJGfyZB4CRmI",
- "mode": "list",
- "cachedResultName": "GLM_GLMWay_Calendario de Entrenamientos",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1zQabzR4ZpQVqYvJ0Cv5QTQ2TZRl9TahBJGfyZB4CRmI/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": "gid=0",
- "mode": "list",
- "cachedResultName": "Hoja 1",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit#gid=0"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "col_1",
- "lookupValue": "2 July"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 2368,
- -1184
- ],
- "id": "ed7dc4ef-e1fe-4305-ba7e-a98b617ee095",
- "name": "Get row(s) in sheet2",
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
{
"parameters": {
"rule": {
@@ -506,37 +272,6 @@
"id": "7f7d71b2-6c53-49a2-92d8-e66b2d0bff54",
"name": "Schedule Trigger"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 4 }) }}",
- "options": {
- "fields": "",
- "query": "Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2464,
- -832
- ],
- "id": "77e81486-bffe-457d-8bc0-442c25ff4512",
- "name": "Entrenamiento ingles1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"url": "=https://glm.bamboohr.com/api/v1/employees/{{ $json.id }}?fields=supervisorEmail,hireDate,supervisorEId,jobTitle",
@@ -603,40 +338,6 @@
"id": "8a2be7cc-85ad-4e44-92a7-fe3f94df703f",
"name": "Hay coordinador?"
},
- {
- "parameters": {
- "conditions": {
- "options": {
- "caseSensitive": true,
- "leftValue": "",
- "typeValidation": "strict",
- "version": 3
- },
- "conditions": [
- {
- "id": "d7d68505-8c34-44cd-b771-56bef28ada41",
- "leftValue": "={{ $('Get an employee').item.json.workEmail }}",
- "rightValue": "",
- "operator": {
- "type": "string",
- "operation": "notEmpty",
- "singleValue": true
- }
- }
- ],
- "combinator": "and"
- },
- "options": {}
- },
- "type": "n8n-nodes-base.if",
- "typeVersion": 2.3,
- "position": [
- 2432,
- -1344
- ],
- "id": "deb40073-dc0e-41e4-ad7c-6df18de25b4f",
- "name": "Empleado le falta info?"
- },
{
"parameters": {
"content": "## Formato fecha\nyyyy-mm-dd\n",
@@ -789,8 +490,8 @@
},
"type": "n8n-nodes-base.stickyNote",
"position": [
- 640,
- -816
+ 784,
+ -640
],
"typeVersion": 1,
"id": "719365c8-8099-4108-a910-83b651d81181",
@@ -814,7 +515,7 @@
"parameters": [
{
"name": "number",
- "value": "={{ \"18097159076@s.whatsapp.net\" }}"
+ "value": "={{ \"18494105855@s.whatsapp.net\" }}"
},
{
"name": "mediatype",
@@ -996,7 +697,7 @@
"parameters": {
"content": "## Envio de formulario de evaluacion despues que la sesion finalize",
"height": 304,
- "width": 2720,
+ "width": 2976,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
@@ -1024,36 +725,6 @@
"id": "cd2fe5c5-9963-410b-a61a-edc36b5aaed1",
"name": "Sticky Note5"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1200,
- -896
- ],
- "id": "e0cc1e60-9379-45fb-b7f4-6def9c3e9601",
- "name": "Entrenamiento ingles3",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"content": "## Completar datos y enviar invitacion",
@@ -1151,66 +822,6 @@
"id": "ce9f31d4-454e-4e31-9a22-8173b3fae392",
"name": "Pais?1"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2240,
- -672
- ],
- "id": "00c87312-256a-4738-856d-e92b9e144c75",
- "name": "Entrenamiento español1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2240,
- -848
- ],
- "id": "b3c26eeb-2ff9-42c9-b5cc-fe0776e53c46",
- "name": "Entrenamiento ingles4",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"conditions": {
@@ -1262,7 +873,7 @@
"parameters": [
{
"name": "number",
- "value": "={{ \"18097159076@s.whatsapp.net\" }}"
+ "value": "={{ \"18494105855@s.whatsapp.net\" }}"
},
{
"name": "mediatype",
@@ -1375,55 +986,6 @@
"id": "b183c892-8822-4bc3-a92c-4410eac41a01",
"name": "Pais?"
},
- {
- "parameters": {
- "operation": "update",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "eventId": "3ul4moq4isoavr9jhqpcbs7juu_20260617T230000Z",
- "updateFields": {
- "attendeesUi": {
- "values": {
- "attendees": [
- ""
- ]
- }
- }
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1520,
- -928
- ],
- "id": "711b3353-6f75-4c6d-bef7-e704290787e8",
- "name": "Invitar con calendarios entrenamiento ingles",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "content": "## Invitar al nuevo ingreso a travez del calendario usando el id del evento, asi le aparece el evento",
- "height": 384
- },
- "type": "n8n-nodes-base.stickyNote",
- "position": [
- 1440,
- -1168
- ],
- "typeVersion": 1,
- "id": "304297ee-18fc-4cbd-8a01-b627ae08b991",
- "name": "Sticky Note7"
- },
{
"parameters": {
"amount": 2
@@ -1558,48 +1120,6 @@
}
}
},
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg",
- "mode": "list",
- "cachedResultName": "Calendario #TheGLMWay",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": 169172567,
- "mode": "list",
- "cachedResultName": "Coordinadores RRHH",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg/edit#gid=169172567"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "Pais",
- "lookupValue": "={{ $('Get an employee').item.json.location }}"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 1024,
- -688
- ],
- "id": "d565bfde-93eb-4b39-afc8-4b294c7e9df7",
- "name": "Obtener coordinador",
- "alwaysOutputData": true,
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
{
"parameters": {
"options": {}
@@ -1661,36 +1181,6 @@
"id": "4d94c907-8ab1-4213-be20-9e24173cf0a3",
"name": "Pais?2"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1008,
- -816
- ],
- "id": "516244e1-3e39-4905-9160-86af296a0479",
- "name": "Entrenamiento español3",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"assignments": {
@@ -2220,24 +1710,11 @@
"typeVersion": 1.3,
"position": [
-352,
- 1552
+ 1504
],
"id": "6951af7d-5098-4156-81bd-8f67034fcf70",
"name": "Schedule Trigger3"
},
- {
- "parameters": {
- "options": {}
- },
- "type": "n8n-nodes-base.splitInBatches",
- "typeVersion": 3,
- "position": [
- 704,
- 1376
- ],
- "id": "7545364a-df0a-4420-a1af-5bcd4f8c9602",
- "name": "Loop Over Items2"
- },
{
"parameters": {
"conditions": {
@@ -2329,45 +1806,11 @@
"typeVersion": 2.2,
"position": [
1520,
- 1536
+ 1488
],
"id": "13ee807a-f1cd-48ef-921b-7b5c260ba116",
"name": "Pais?3"
},
- {
- "parameters": {
- "conditions": {
- "options": {
- "caseSensitive": true,
- "leftValue": "",
- "typeValidation": "strict",
- "version": 2
- },
- "conditions": [
- {
- "id": "9674fd7e-dd62-42d4-8931-6c67e59e3dd7",
- "leftValue": "={{ $json.isValid }}",
- "rightValue": "Jamaica",
- "operator": {
- "type": "boolean",
- "operation": "true",
- "singleValue": true
- }
- }
- ],
- "combinator": "or"
- },
- "options": {}
- },
- "type": "n8n-nodes-base.if",
- "typeVersion": 2.2,
- "position": [
- 432,
- 1344
- ],
- "id": "0fea4950-f873-4375-8964-45cfc3fead02",
- "name": "Falta 48h para el evento?1"
- },
{
"parameters": {
"jsCode": "// Helper para parsear \"14 December\" → Date (año actual)\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const year = new Date().getFullYear();\n return new Date(`${month} ${day}, ${year}`);\n}\n\n// Formatear fecha como \"26 June\"\nfunction formatDate(date) {\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n return `${day} ${month}`;\n}\n\nconst fecha_sesion = $input.first().json.fecha_sesion_inscrito;\n\n// Fecha de hoy normalizada a medianoche\nconst hoy = new Date();\nhoy.setHours(0, 0, 0, 0);\n\nconst sesion = parseSessionDate(fecha_sesion);\nsesion.setHours(0, 0, 0, 0);\n\n// Diferencia en días\nconst diferenciaDias = Math.floor(\n (sesion - hoy) / (1000 * 60 * 60 * 24)\n);\n\n// True si es hoy (0 días) o mañana (1 día)\nconst isValid = diferenciaDias >= 0 && diferenciaDias <= 1;\n\nreturn [\n {\n json: {\n fecha_sesion,\n fecha_hoy: formatDate(hoy),\n diferenciaDias,\n isValid\n }\n }\n];"
@@ -2381,91 +1824,6 @@
"id": "bbd0558c-3b3a-462b-957c-83b1975e5413",
"name": "Calcular falta 24h o es el mismo dia"
},
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4",
- "mode": "list",
- "cachedResultName": "Empleados GLM Prueba",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": "gid=0",
- "mode": "list",
- "cachedResultName": "Hoja 1",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit#gid=0"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "cargo",
- "lookupValue": "Coordinador RRHH"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 3856,
- 432
- ],
- "id": "ddfe7158-8cc6-440c-9e59-de97b7124eb8",
- "name": "Obtener coordinador2",
- "alwaysOutputData": true,
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2464,
- -656
- ],
- "id": "98ab4271-94af-4a22-9882-b80f84be7c24",
- "name": "Entrenamiento español4",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "jsCode": "const monthNames = ['January','February','March','April','May','June','July',\n 'August','September','October','November','December'];\n\nreturn items.map(item => {\n const event = item.json;\n const startStr = event.start.dateTime || event.start.date;\n const datePart = startStr.split('T')[0]; // \"2026-06-21\"\n const [year, month, day] = datePart.split('-').map(Number);\n const formattedDate = `${day} ${monthNames[month - 1]}`;\n\n const summary = event.summary || '';\n const organizerName = event.organizer?.displayName \n || (event.organizer?.email ? event.organizer.email.split('@')[0] : '');\n\n let espanol = '';\n let english = '';\n\n if (summary.toLowerCase().includes('entrenamiento')) {\n espanol = organizerName;\n } else if (summary.toLowerCase().includes('training')) {\n english = organizerName;\n }\n\n return {\n json: {\n Fecha: formattedDate,\n Espanol: espanol,\n English: english\n }\n };\n});"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 4064,
- 432
- ],
- "id": "41289b04-a9f4-4abc-8816-5afccd0e7996",
- "name": "Code in JavaScript1"
- },
{
"parameters": {
"rule": {
@@ -2607,27 +1965,6 @@
"id": "ddcb9db1-2590-4364-aeeb-db79c35ea604",
"name": "Sticky Note10"
},
- {
- "parameters": {
- "operation": "get",
- "employeeId": "=50821",
- "options": {}
- },
- "type": "n8n-nodes-base.bambooHr",
- "typeVersion": 1,
- "position": [
- 432,
- -864
- ],
- "id": "4ac439e5-1b93-4355-a450-b019b63e9437",
- "name": "Get an employee2",
- "credentials": {
- "bambooHrApi": {
- "id": "VwYITXROyinOC4je",
- "name": "Eidan - BambooHR account"
- }
- }
- },
{
"parameters": {
"sendTo": "=eidan.then14@gmail.com",
@@ -2640,7 +1977,7 @@
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
- 1968,
+ 2032,
2848
],
"id": "3c22bc65-799f-4432-86fe-10ae92e036de",
@@ -2665,7 +2002,7 @@
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
- 1968,
+ 2032,
2672
],
"id": "4dfc0135-6886-4d33-9b2a-a26efbe72832",
@@ -2703,7 +2040,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 2192,
+ 2256,
2768
],
"id": "b7c02e2f-1382-4086-9059-cf75fee9d278",
@@ -3076,32 +2413,6 @@
"id": "8f80d9ca-1e4b-4753-b482-df7b0fd24f61",
"name": "Formatear fecha y detectar idioma"
},
- {
- "parameters": {
- "jsCode": "const start = $input.first().json.start?.dateTime || $input.first().json.start?.date;\nconst end = $input.first().json.end?.dateTime || $input.first().json.end?.date;\n\nfunction formatHora(dateTimeStr) {\n if (!dateTimeStr) return null;\n return dateTimeStr.split('T')[1].substring(0, 5);\n}\n\nreturn [{\n json: {\n hora_inicio: formatHora(start),\n hora_fin: formatHora(end)\n }\n}];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 3856,
- 288
- ],
- "id": "abdbae74-c0ab-4f9a-b9d8-73cef07748a2",
- "name": "Calcular fecha hireDate2"
- },
- {
- "parameters": {
- "jsCode": "const months = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n\nfunction formatearFecha(dateTimeStr) {\n if (!dateTimeStr) return null;\n const datePart = dateTimeStr.split('T')[0];\n const [year, month, day] = datePart.split('-');\n return `${parseInt(day, 10)} ${months[parseInt(month, 10) - 1]}`;\n}\n\nfunction detectarIdioma(summary) {\n if (!summary) return null;\n if (summary.includes(\"#TheGLMWay Training\")) return \"EN\";\n if (summary.includes(\"Entrenamiento #TheGLMWay\")) return \"ES\";\n return null;\n}\n\nfunction formatearHora(dateTimeStr) {\n if (!dateTimeStr) return null;\n const timePart = dateTimeStr.split('T')[1];\n if (!timePart) return null;\n return timePart.substring(0, 5);\n}\n\nconst output = [];\n\nfor (const item of $input.all()) {\n const event = item.json;\n\n const startRaw = event.start?.dateTime || event.start?.date;\n const endRaw = event.end?.dateTime || event.end?.date;\n const url = event.conferenceData?.entryPoints?.[0]?.uri || null;\n const idioma = detectarIdioma(event.summary);\n\n // Ignorar eventos vacíos o sin datos esenciales\n if (!event.summary || !startRaw) {\n console.log(\"Evento ignorado (vacío):\", JSON.stringify(event));\n continue;\n }\n\n output.push({\n json: {\n id: event.id,\n titulo: event.summary,\n idioma: idioma,\n fecha: formatearFecha(startRaw),\n hora_inicio: formatearHora(startRaw),\n hora_fin: formatearHora(endRaw),\n url: url,\n descripcion: event.description || null\n }\n });\n}\n\nconsole.log(`Sesiones procesadas: ${output.length}`);\nreturn output;\n\n// Agrega esto antes del return output\nconst resumen = output.map(i => ({\n meet_id: i.json.meet_id,\n titulo: i.json.titulo,\n fecha_sesion: i.json.fecha_sesion,\n hora_inicio: i.json.hora_inicio,\n hora_fin: i.json.hora_fin,\n enlace_reunion: i.json.enlace_reunion,\n idioma: i.json.idioma\n}));\nconsole.log(JSON.stringify(resumen));"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 4144,
- 192
- ],
- "id": "cded5025-8e1b-4609-b7c6-5acb81244bdf",
- "name": "Formatear fecha y detectar idioma1"
- },
{
"parameters": {
"jsCode": "const today = new Date();\ntoday.setHours(0, 0, 0, 0);\n\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date (año actual)\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const year = new Date().getFullYear();\n return new Date(`${month} ${day}, ${year}`);\n}\n\n// Formatear fecha como \"26 June\"\nfunction formatDate(date) {\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n return `${day} ${month}`;\n}\n\n// Iterar hasta encontrar la sesión que hace match con hoy\nlet matchedSession = null;\n\nfor (const item of sessions) {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n if (!sessionDate) continue;\n\n sessionDate.setHours(0, 0, 0, 0);\n\n if (sessionDate.getTime() === today.getTime()) {\n matchedSession = item;\n break;\n }\n}\n\nreturn [\n {\n json: {\n today: formatDate(today),\n foundSession: !!matchedSession,\n session: matchedSession?.json ?? null\n }\n }\n];"
@@ -3124,8 +2435,8 @@
},
"type": "n8n-nodes-base.stickyNote",
"position": [
- 880,
- 2960
+ 928,
+ 2912
],
"typeVersion": 1,
"id": "a9266141-49ab-41f7-b8ab-dc45e746ed1c",
@@ -3144,7 +2455,7 @@
"typeVersion": 1,
"position": [
-192,
- 1552
+ 1504
],
"id": "a4fc1575-5326-467f-8b05-f8c9569cdca1",
"name": "Obtener sesiones",
@@ -3155,53 +2466,6 @@
}
}
},
- {
- "parameters": {
- "operation": "update",
- "tableId": "sesiones_glmway",
- "filters": {
- "conditions": [
- {
- "keyName": "fecha_sesion",
- "condition": "eq",
- "keyValue": "={{ $json.fecha_sesion_inscrito }}"
- }
- ]
- },
- "fieldsUi": {
- "fieldValues": [
- {}
- ]
- }
- },
- "type": "n8n-nodes-base.supabase",
- "typeVersion": 1,
- "position": [
- 3744,
- 272
- ],
- "id": "df865311-bf25-4b35-ac8a-da71a3d93e05",
- "name": "Añadir a listado de participantes1",
- "credentials": {
- "supabaseApi": {
- "id": "2PlsR6rpK7rQTIEn",
- "name": "Sofia test - Supabase account"
- }
- }
- },
- {
- "parameters": {
- "jsCode": "const item = $input.first().json;\nconst fecha_sesion = item.fecha_sesion;\n\n// Hoy\nconst hoy = new Date();\nhoy.setHours(0, 0, 0, 0);\n\n// Formatear hoy como \"26 June\"\nconst fecha_hoy = hoy.toLocaleDateString('en-GB', {\n day: 'numeric',\n month: 'long'\n});\n\n// Crear la fecha de la sesión usando el año actual\nlet sesion = new Date(`${fecha_sesion} ${hoy.getFullYear()}`);\nsesion.setHours(0, 0, 0, 0);\n\n// Si ya pasó este año, asumir el próximo\nif (sesion < hoy) {\n sesion = new Date(`${fecha_sesion} ${hoy.getFullYear() + 1}`);\n sesion.setHours(0, 0, 0, 0);\n}\n\n// Diferencia en días\nconst diferenciaDias = Math.floor(\n (sesion - hoy) / (1000 * 60 * 60 * 24)\n);\n\nconst isValid = diferenciaDias >= 0 && diferenciaDias <= 2;\n\n// Si no cumple la condición, no retornar nada\nif (!isValid) {\n return [];\n}\n\n// Retornar la sesión dentro de la llave \"sesion\"\nreturn [\n {\n json: {\n sesion: item,\n fecha_hoy,\n diferenciaDias,\n isValid\n }\n }\n];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 240,
- 1344
- ],
- "id": "e8d383b8-9081-4829-8516-a03f6f5a1b63",
- "name": "Calcular falta 48h o 24h"
- },
{
"parameters": {
"operation": "getAll",
@@ -3226,7 +2490,7 @@
"typeVersion": 1,
"position": [
464,
- 1536
+ 1488
],
"id": "0457dbf8-9c04-4f2d-9928-4f770eb51cc0",
"name": "Obtener coordinadores1",
@@ -3266,7 +2530,7 @@
"typeVersion": 2.3,
"position": [
208,
- 1552
+ 1504
],
"id": "334a5703-db8a-4a88-b528-8468ee61ddbc",
"name": "Hay inscritos en la sesion?"
@@ -3279,48 +2543,11 @@
"typeVersion": 2,
"position": [
656,
- 1536
+ 1488
],
"id": "3073d739-a2c7-4ba1-81bc-aeae266ad3ff",
"name": "Matchear coordinador y pais inscrito"
},
- {
- "parameters": {
- "operation": "update",
- "tableId": "coordinadores_rrhh_glmway",
- "filters": {
- "conditions": [
- {
- "keyName": "pais",
- "condition": "eq",
- "keyValue": "={{ Object.keys($json)[0] }}"
- }
- ]
- },
- "fieldsUi": {
- "fieldValues": [
- {
- "fieldId": "estado",
- "fieldValue": "notificado"
- }
- ]
- }
- },
- "type": "n8n-nodes-base.supabase",
- "typeVersion": 1,
- "position": [
- 2160,
- 1552
- ],
- "id": "0881ba84-bd04-4e91-9c09-0ba18e28ed28",
- "name": "Actualizar estado a notificado",
- "credentials": {
- "supabaseApi": {
- "id": "2PlsR6rpK7rQTIEn",
- "name": "Sofia test - Supabase account"
- }
- }
- },
{
"parameters": {
"conditions": {
@@ -3956,8 +3183,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
- 1536,
- 1936
+ 1840,
+ 1824
],
"id": "11458855-2bd1-4778-81f6-efe07ee1ee8b",
"name": "Enviar al espacio de prueba",
@@ -4231,44 +3458,6 @@
"name": "Enviar notifacion a glmway notificaciones",
"retryOnFail": true
},
- {
- "parameters": {
- "method": "POST",
- "url": "=https://chat.googleapis.com/v1/spaces/AAQAR2K6i8Y/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=yOTYTZ6rayK3NlOworCkaKMPCqssxjbokfKY3wFjeXg",
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "={{ $json }}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.2,
- "position": [
- 1920,
- 1456
- ],
- "id": "5d50cef9-0ebb-4f28-8deb-69c7feb6f62e",
- "name": "Enviar al espacio de prueba1",
- "retryOnFail": true
- },
- {
- "parameters": {
- "method": "POST",
- "url": "=https://chat.googleapis.com/v1/spaces/AAQAR2K6i8Y/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=yOTYTZ6rayK3NlOworCkaKMPCqssxjbokfKY3wFjeXg",
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "={{ $json }}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.2,
- "position": [
- 1920,
- 1632
- ],
- "id": "c83590cd-6e98-4e2d-81f6-6e2f204a948d",
- "name": "Enviar al espacio de prueba2",
- "retryOnFail": true
- },
{
"parameters": {
"jsCode": "// 1. Obtener datos de la sesión del nodo \"Calcular falta 48h o 24h1\"\nconst sessionNode = $('Calcular falta 48h o 24h1').first();\nconst sesion = sessionNode?.json?.sesion || {}; // Leído desde la raíz del JSON\n\n// 2. Contar participantes y construir de forma dinámica la lista por país\nlet totalParticipantes = 0;\nlet listaParticipantesTexto = \"\";\n\nif (sesion.participantes) {\n Object.keys(sesion.participantes).forEach(pais => {\n const listaPais = sesion.participantes[pais];\n if (Array.isArray(listaPais) && listaPais.length > 0) {\n totalParticipantes += listaPais.length;\n \n // Añadir el encabezado del país\n listaParticipantesTexto += `
📍 ${pais} (${listaPais.length}):
`;\n \n // Listar cada participante de ese país\n listaPais.forEach(p => {\n listaParticipantesTexto += `• ${p.nombre} (${p.departamento || 'Sin Depto'} | ${p.division || 'Sin Division'})
`;\n });\n }\n });\n}\n\n// 3. Obtener los contactId del nodo anterior para generar las menciones de los coordinadores\nlet menciones = \"\";\ntry {\n const itemsUnirDatos = $('Unir datos3').all(); // Asegúrate de verificar si tu nodo se llama Unir datos3 o similar\n const idsUnicos = [...new Set(\n itemsUnirDatos\n .map(item => item.json.contactId)\n .filter(id => id !== undefined && id !== null && id !== \"\")\n )];\n menciones = idsUnicos.map(id => ``).join(\" \");\n} catch (error) {\n menciones = \"\";\n}\n\n// 4. Construir cuerpo del mensaje con formato Google Chat Card\nconst body = {\n text: `🔔 *Aviso para Coordinadores RRHH* \\nEstimados ${menciones}, aquí está el listado de personas inscritas para la sesión de mañana.`,\n cardsV2: [\n {\n cardId: \"session-reminder-hr\",\n card: {\n header: {\n title: `🎓 Capacitación #TheGLMWay de mañana`,\n },\n sections: [\n {\n header: \"📈 Resumen de Asistencia\",\n widgets: [\n {\n textParagraph: {\n text: `Total inscritos: ${totalParticipantes} personas
` + \n listaParticipantesTexto\n }\n }\n ]\n }\n ]\n }\n }\n ]\n};\n\nreturn [{ json: body }];"
@@ -4277,7 +3466,7 @@
"typeVersion": 2,
"position": [
1744,
- 1632
+ 1584
],
"id": "87ace248-4ea5-406f-89da-88d450ad413e",
"name": "Formatear datos espanol2"
@@ -4290,7 +3479,7 @@
"typeVersion": 2,
"position": [
1744,
- 1456
+ 1408
],
"id": "bb4cbe19-9364-4c83-a309-5594d9c5a26b",
"name": "Formatear datos ingles2"
@@ -4303,7 +3492,7 @@
"typeVersion": 2,
"position": [
0,
- 1552
+ 1504
],
"id": "47542a5b-ebe1-4e85-8229-bb9aa7e1b744",
"name": "Calcular falta 48h o 24h1"
@@ -4321,7 +3510,7 @@
"typeVersion": 1,
"position": [
1200,
- 1536
+ 1488
],
"id": "f49640d2-f7a0-43da-b9e1-1da5dbe93a22",
"name": "Get a contact1",
@@ -4340,7 +3529,7 @@
"typeVersion": 2,
"position": [
1024,
- 1536
+ 1488
],
"id": "c17d8ecc-45f9-4c03-a4d4-88d90ae8a3ec",
"name": "Limpiar id1"
@@ -4353,7 +3542,7 @@
"typeVersion": 2,
"position": [
1360,
- 1536
+ 1488
],
"id": "73de340f-189b-4963-bdf6-9b1bfd603cd6",
"name": "Unir datos3"
@@ -4369,7 +3558,7 @@
"typeVersion": 4.2,
"position": [
864,
- 1536
+ 1488
],
"id": "949eb6ae-2aba-43d2-a262-f91313336d2f",
"name": "Obtener miembros RRHH Notificaciones",
@@ -4447,7 +3636,7 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
- 368,
+ 432,
2752
],
"id": "c05fc7b5-5d4e-403b-aa67-49b7427f9b04",
@@ -4467,7 +3656,7 @@
"conditions": [
{
"keyName": "fecha_sesion",
- "keyValue": "={{ $('Prueba3').item.json.dateFormatted }}"
+ "keyValue": "={{ $('Buscar sesion con hora UTC').item.json.dateFormatted }}"
}
]
}
@@ -4475,7 +3664,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 736,
+ 800,
2752
],
"id": "e4115807-580d-4075-8d62-de14c174c43a",
@@ -4494,7 +3683,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 896,
+ 960,
2752
],
"id": "2e7c7d5a-13bf-40a0-bdf8-1f2f5b07188b",
@@ -4508,7 +3697,7 @@
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
- 1056,
+ 1120,
2752
],
"id": "8b9471a9-f616-414d-988a-8f9914d72db3",
@@ -4700,8 +3889,8 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 912,
- 3040
+ 960,
+ 2992
],
"id": "982ec4df-b792-46b9-bce5-ab6e8709a2a8",
"name": "Actualizar instructor de inscritos",
@@ -4712,19 +3901,6 @@
}
}
},
- {
- "parameters": {
- "jsCode": "// 1. Obtener los registros del nodo anterior\nconst records = $input.first().json.conferenceRecords || [];\n\n// 2. Extraer el valor directo de timestampRD\nconst timestampRD = $(\"Generar timestamp RD y UTC\").first().json.timestampRD;\n\n// Convertir a fecha/tiempo (JavaScript realiza el cálculo internamente en UTC)\nconst fechaObjetivoMs = new Date(timestampRD).getTime();\n\nlet sesionEncontrada = null;\nlet sesionMasCercana = null;\nlet menorDiferencia = Infinity;\n\n// 3. Iterar sobre las conferencias\nfor (const record of records) {\n if (!record.startTime || !record.endTime) continue;\n\n const startMs = new Date(record.startTime).getTime();\n const endMs = new Date(record.endTime).getTime();\n\n // Opción 1: Si timestampRD está DENTRO de la sesión (startTime <= timestampRD <= endTime)\n if (fechaObjetivoMs >= startMs && fechaObjetivoMs <= endMs) {\n sesionEncontrada = record;\n break; // Prioridad máxima, encontramos la sesión activa\n }\n\n // Opción 2: Buscar la más cercana mediante la diferencia al centro de la reunión\n const centroReunion = startMs + (endMs - startMs) / 2;\n const diferencia = Math.abs(fechaObjetivoMs - centroReunion);\n\n if (diferencia < menorDiferencia) {\n menorDiferencia = diferencia;\n sesionMasCercana = record;\n }\n}\n\n// Usar la sesión activa; si no hay ninguna activa en ese momento exacto, toma la más cercana\nconst match = sesionEncontrada || sesionMasCercana;\n\nif (!match) {\n return [];\n}\n\nconst startObj = new Date(match.startTime);\nconst endObj = new Date(match.endTime);\n\n// Formatear a \"15 July\" extrayendo día y mes individualmente según la zona de RD\nconst formatter = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"long\",\n timeZone: \"America/Santo_Domingo\"\n});\n\nconst parts = formatter.formatToParts(startObj);\nconst day = parts.find(p => p.type === 'day').value;\nconst month = parts.find(p => p.type === 'month').value;\nconst dateFormatted = `${day} ${month}`; // Forzado a \"15 July\"\n\n// 4. Retornar el resultado\nreturn [\n {\n json: {\n id: match.name ? match.name.split('/').pop() : \"\",\n name: match.name || \"\",\n space: match.space || \"\",\n dateFormatted: dateFormatted, // Ej: \"15 July\"\n startTimeRaw: match.startTime,\n endTimeRaw: match.endTime,\n startTimeLocalRD: startObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" }),\n endTimeLocalRD: endObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" })\n }\n }\n];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 208,
- 2752
- ],
- "id": "881e05b0-c9fd-4799-b828-395b99f92a88",
- "name": "Prueba3"
- },
{
"parameters": {
"operation": "update",
@@ -4751,7 +3927,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 1216,
+ 1280,
2752
],
"id": "d93b4d14-106f-4d05-b397-78ec6d0dc522",
@@ -4783,7 +3959,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 560,
+ 624,
2752
],
"id": "73c64bc3-4321-46d6-9d5b-ef74bd385b2c",
@@ -4879,7 +4055,7 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
- 1760,
+ 1824,
2752
],
"id": "5df50d37-798a-42f8-ab7b-2ae3f05610fd",
@@ -4892,7 +4068,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 1616,
+ 1680,
2752
],
"id": "9c046113-3694-40f9-819c-42122ec117e5",
@@ -4926,7 +4102,7 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
- 1392,
+ 1456,
2752
],
"id": "a2011c37-b133-431b-b8ff-41b6a4bb4f10",
@@ -4966,6 +4142,145 @@
"name": "Eidan - Google Calendar account"
}
}
+ },
+ {
+ "parameters": {
+ "jsCode": "// 1. Obtener los registros del nodo anterior\nconst records = $input.first().json.conferenceRecords || [];\n\n// 2. Extraer el valor directo de timestampRD\nconst timestampRD = $(\"Generar timestamp RD y UTC\").first().json.timestampRD;\n\n// Convertir a fecha/tiempo (JavaScript realiza el cálculo internamente en UTC)\nconst fechaObjetivoMs = new Date(timestampRD).getTime();\n\nlet sesionEncontrada = null;\nlet sesionMasCercana = null;\nlet menorDiferencia = Infinity;\n\n// 3. Iterar sobre las conferencias\nfor (const record of records) {\n if (!record.startTime || !record.endTime) continue;\n\n const startMs = new Date(record.startTime).getTime();\n const endMs = new Date(record.endTime).getTime();\n\n // Opción 1: Si timestampRD está DENTRO de la sesión (startTime <= timestampRD <= endTime)\n if (fechaObjetivoMs >= startMs && fechaObjetivoMs <= endMs) {\n sesionEncontrada = record;\n break; // Prioridad máxima, encontramos la sesión activa\n }\n\n // Opción 2: Buscar la más cercana mediante la diferencia al centro de la reunión\n const centroReunion = startMs + (endMs - startMs) / 2;\n const diferencia = Math.abs(fechaObjetivoMs - centroReunion);\n\n if (diferencia < menorDiferencia) {\n menorDiferencia = diferencia;\n sesionMasCercana = record;\n }\n}\n\n// Usar la sesión activa; si no hay ninguna activa en ese momento exacto, toma la más cercana\nconst match = sesionEncontrada || sesionMasCercana;\n\nif (!match) {\n return [];\n}\n\nconst startObj = new Date(match.startTime);\nconst endObj = new Date(match.endTime);\n\n// Formatear a \"15 July\" extrayendo día y mes individualmente según la zona de RD\nconst formatter = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"long\",\n timeZone: \"America/Santo_Domingo\"\n});\n\nconst parts = formatter.formatToParts(startObj);\nconst day = parts.find(p => p.type === 'day').value;\nconst month = parts.find(p => p.type === 'month').value;\nconst dateFormatted = `${day} ${month}`; // Forzado a \"15 July\"\n\n// 4. Retornar el resultado\nreturn [\n {\n json: {\n id: match.name ? match.name.split('/').pop() : \"\",\n name: match.name || \"\",\n space: match.space || \"\",\n dateFormatted: dateFormatted, // Ej: \"15 July\"\n startTimeRaw: match.startTime,\n endTimeRaw: match.endTime,\n startTimeLocalRD: startObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" }),\n endTimeLocalRD: endObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" })\n }\n }\n];"
+ },
+ "type": "n8n-nodes-base.code",
+ "typeVersion": 2,
+ "position": [
+ 240,
+ 2752
+ ],
+ "id": "881e05b0-c9fd-4799-b828-395b99f92a88",
+ "name": "Buscar sesion con hora UTC"
+ },
+ {
+ "parameters": {
+ "httpMethod": "POST",
+ "path": "evaluacion-glmway",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.webhook",
+ "typeVersion": 2.1,
+ "position": [
+ -320,
+ 3104
+ ],
+ "id": "fe7c0429-6070-4181-ad6d-1a5a4888ce66",
+ "name": "Webhook1",
+ "webhookId": "14f1d226-12da-42c2-90d1-4d8fd5620cae"
+ },
+ {
+ "parameters": {
+ "content": "## Guardar conteo de evaluaciones han sido resueltas",
+ "height": 240,
+ "width": 608,
+ "color": 4
+ },
+ "type": "n8n-nodes-base.stickyNote",
+ "position": [
+ -384,
+ 3024
+ ],
+ "typeVersion": 1,
+ "id": "7d34e6af-6b75-4780-9f70-848d2045b123",
+ "name": "Sticky Note7"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "https://dbit.digitalcompass.agency/rest/v1/rpc/incrementar_evaluaciones_resueltas_glmway",
+ "sendHeaders": true,
+ "headerParameters": {
+ "parameters": [
+ {
+ "name": "apikey",
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ },
+ {
+ "name": "Authorization",
+ "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ }
+ ]
+ },
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.4,
+ "position": [
+ -112,
+ 3104
+ ],
+ "id": "59013746-bac2-4c90-a39e-3d7835ab6c31",
+ "name": "Incrementar conteo de evaluaciones respondidas"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "https://dbit.digitalcompass.agency/rest/v1/rpc/incrementar_evaluaciones_enviadas_glmway",
+ "sendHeaders": true,
+ "headerParameters": {
+ "parameters": [
+ {
+ "name": "apikey",
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ },
+ {
+ "name": "Authorization",
+ "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ }
+ ]
+ },
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.4,
+ "position": [
+ 2448,
+ 2768
+ ],
+ "id": "5b1e1192-2e9b-44b2-9303-194b6266202b",
+ "name": "Incrementar conteo de evaluaciones enviadas"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "=https://chat.googleapis.com/v1/spaces/AAQAQj1t9AA/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Bjwcj-R0V8RsffMTHW0JovFcjotMghLp8bQ-40sxyfI",
+ "sendBody": true,
+ "specifyBody": "json",
+ "jsonBody": "={{ $json }}",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.2,
+ "position": [
+ 1952,
+ 1408
+ ],
+ "id": "5d50cef9-0ebb-4f28-8deb-69c7feb6f62e",
+ "name": "Enviar notificacion a rrhh notificaciones",
+ "retryOnFail": true
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "=https://chat.googleapis.com/v1/spaces/AAQAQj1t9AA/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Bjwcj-R0V8RsffMTHW0JovFcjotMghLp8bQ-40sxyfI",
+ "sendBody": true,
+ "specifyBody": "json",
+ "jsonBody": "={{ $json }}",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.2,
+ "position": [
+ 1952,
+ 1584
+ ],
+ "id": "c83590cd-6e98-4e2d-81f6-6e2f204a948d",
+ "name": "Enviar notificacion a rrhh notificaciones1",
+ "retryOnFail": true
}
],
"connections": {
@@ -5075,11 +4390,6 @@
]
]
},
- "Informacion del supervisor": {
- "main": [
- []
- ]
- },
"Informacion extra del empleado": {
"main": [
[
@@ -5183,16 +4493,6 @@
]
]
},
- "Entrenamiento ingles": {
- "main": [
- []
- ]
- },
- "Entrenamiento español": {
- "main": [
- []
- ]
- },
"Calcular fecha hireDate1": {
"main": [
[
@@ -5240,16 +4540,6 @@
]
]
},
- "Entrenamiento español1": {
- "main": [
- []
- ]
- },
- "Entrenamiento ingles4": {
- "main": [
- []
- ]
- },
"Hay coordinador?1": {
"main": [
[
@@ -5341,11 +4631,6 @@
]
]
},
- "Obtener coordinador": {
- "main": [
- []
- ]
- },
"Loop Over Items1": {
"main": [
[],
@@ -5636,12 +4921,6 @@
]
]
},
- "Loop Over Items2": {
- "main": [
- [],
- []
- ]
- },
"Pais?3": {
"main": [
[
@@ -5660,12 +4939,6 @@
]
]
},
- "Falta 48h para el evento?1": {
- "main": [
- [],
- []
- ]
- },
"Calcular falta 24h o es el mismo dia": {
"main": [
[
@@ -5907,17 +5180,6 @@
]
]
},
- "Calcular falta 48h o 24h": {
- "main": [
- [
- {
- "node": "Falta 48h para el evento?1",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Obtener coordinadores1": {
"main": [
[
@@ -5952,11 +5214,6 @@
]
]
},
- "Actualizar estado a notificado": {
- "main": [
- []
- ]
- },
"Hay inscritos?": {
"main": [
[
@@ -6234,7 +5491,7 @@
"main": [
[
{
- "node": "Prueba3",
+ "node": "Buscar sesion con hora UTC",
"type": "main",
"index": 0
}
@@ -6365,33 +5622,11 @@
]
]
},
- "Enviar al espacio de prueba2": {
- "main": [
- [
- {
- "node": "Actualizar estado a notificado",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
- "Enviar al espacio de prueba1": {
- "main": [
- [
- {
- "node": "Actualizar estado a notificado",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Formatear datos ingles2": {
"main": [
[
{
- "node": "Enviar al espacio de prueba1",
+ "node": "Enviar notificacion a rrhh notificaciones",
"type": "main",
"index": 0
}
@@ -6402,7 +5637,7 @@
"main": [
[
{
- "node": "Enviar al espacio de prueba2",
+ "node": "Enviar notificacion a rrhh notificaciones1",
"type": "main",
"index": 0
}
@@ -6578,17 +5813,6 @@
]
]
},
- "Prueba3": {
- "main": [
- [
- {
- "node": "Obtener participantes",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Generar timestamp RD y UTC": {
"main": [
[
@@ -6664,7 +5888,13 @@
},
"Actualizar estado a recordado2": {
"main": [
- []
+ [
+ {
+ "node": "Incrementar conteo de evaluaciones enviadas",
+ "type": "main",
+ "index": 0
+ }
+ ]
]
},
"Termino evento": {
@@ -6677,6 +5907,38 @@
}
]
]
+ },
+ "Buscar sesion con hora UTC": {
+ "main": [
+ [
+ {
+ "node": "Obtener participantes",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ },
+ "Webhook1": {
+ "main": [
+ [
+ {
+ "node": "Incrementar conteo de evaluaciones respondidas",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ },
+ "Enviar notificacion a rrhh notificaciones": {
+ "main": [
+ []
+ ]
+ },
+ "Enviar notificacion a rrhh notificaciones1": {
+ "main": [
+ []
+ ]
}
},
"settings": {
@@ -6743,26 +6005,13 @@
"recurrenceRules": []
},
"node:Termino evento": {
- "lastTimeChecked": "2026-07-27T18:59:46Z"
+ "lastTimeChecked": "2026-07-27T21:54:34Z"
}
},
"meta": {
"templateCredsSetupCompleted": true
},
"pinData": {
- "Get row(s) in sheet2": [
- {
- "json": {
- "row_number": 108,
- "col_1": "2 July",
- "Espanol": "Poul",
- "English": ""
- },
- "pairedItem": {
- "item": 0
- }
- }
- ],
"Schedule Trigger1": [
{
"json": {
@@ -6783,54 +6032,6 @@
}
}
],
- "Calcular falta 48h o 24h1": [
- {
- "json": {
- "sesion": {
- "titulo": "Entrenamiento #TheGLMWay",
- "descripcion": null,
- "fecha_sesion": "29 July",
- "hora_inicio": "19:00",
- "hora_fin": "20:00",
- "instructor": "Pablo",
- "enlace_reunion": "https://meet.google.com/aao-ixkr-uwu",
- "idioma": "ES",
- "created_at": "2026-06-25T21:44:29.483246+00:00",
- "id": "367813be-f9b6-4209-85f7-0ea63a9777fb",
- "correo_instructor": "null",
- "meet_id": "3ul4moq4isoavr9jhqpcbs7juu_20260729T230000Z",
- "participantes": {
- "Guatemala": [
- {
- "correo": "hporoj@gomezlee.marketing",
- "nombre": "Héctor Ernesto Poroj ixcayau",
- "division": "P&G",
- "departamento": "Field Force"
- }
- ],
- "Costa Rica": [
- {
- "correo": "nmora@gomezlee.marketing",
- "nombre": "NIURKA De Los Ángeles MORA ROMERO",
- "division": "P&G",
- "departamento": "Field Force"
- }
- ],
- "Republica Dominicana": [
- {
- "correo": "avizcaino@gomezlee.marketing",
- "nombre": "Abraham Teodoro Vizcaino Santos",
- "division": "Nestlé Purina",
- "departamento": "Field Force"
- }
- ]
- }
- },
- "fecha_hoy": "21 July",
- "diferenciaDias": 1
- }
- }
- ],
"Generar timestamp RD y UTC": [
{
"json": {
@@ -6841,10 +6042,10 @@
}
]
},
- "versionId": "83052b6c-cde6-459c-a163-5ebf7b2f030a",
- "activeVersionId": "83052b6c-cde6-459c-a163-5ebf7b2f030a",
- "versionCounter": 6638,
- "triggerCount": 10,
+ "versionId": "c56efe26-f231-4faf-b54c-c98dcd8e734a",
+ "activeVersionId": "c56efe26-f231-4faf-b54c-c98dcd8e734a",
+ "versionCounter": 6758,
+ "triggerCount": 11,
"shared": [
{
"updatedAt": "2026-06-08T13:50:12.177Z",
@@ -6866,9 +6067,9 @@
],
"tags": [],
"activeVersion": {
- "updatedAt": "2026-07-27T18:59:46.000Z",
- "createdAt": "2026-07-27T18:59:44.644Z",
- "versionId": "83052b6c-cde6-459c-a163-5ebf7b2f030a",
+ "updatedAt": "2026-07-27T21:54:35.000Z",
+ "createdAt": "2026-07-27T21:54:31.876Z",
+ "versionId": "c56efe26-f231-4faf-b54c-c98dcd8e734a",
"workflowId": "F1iPg8hktNAebZua",
"nodes": [
{
@@ -7091,109 +6292,6 @@
"id": "30ffb25f-3ad7-465d-9630-887828df95f6",
"name": "Code in JavaScript4"
},
- {
- "parameters": {
- "url": "=https://glm.bamboohr.com/api/v1/employees/{{ $json.supervisorEId }}?fields=displayName,workEmail,status,supervisorEmail,location,jobTitle,department,",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 2608,
- -960
- ],
- "id": "a34b5746-bdbc-4016-bffc-f953b5c0e7be",
- "name": "Informacion del supervisor",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
- {
- "parameters": {
- "method": "POST",
- "url": "=https://api.bamboohr.com/api/gateway.php/glm/v1/reports/custom",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "{\n \"title\": \"Employees\",\n \"fields\": [\n \"id\",\n \"firstName\",\n \"lastName\",\n \"hireDate\",\n \"department\",\n \"jobTitle\"\n ]\n}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 1280,
- -1408
- ],
- "id": "a52ef26c-a5d6-4bb5-9a99-61fa25206105",
- "name": "Informacion del supervisor1",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
- {
- "parameters": {
- "url": "=https://glm.bamboohr.com/api/v1/employees/50743?fields=displayName,mobilePhone,workPhone,workEmail,status,employeeNumber,supervisor,supervisorEmail,location,jobTitle,department,hireDate,supervisorEId",
- "authentication": "genericCredentialType",
- "genericAuthType": "httpBasicAuth",
- "sendHeaders": true,
- "headerParameters": {
- "parameters": [
- {
- "name": "accept",
- "value": "application/json"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.4,
- "position": [
- 1632,
- -1344
- ],
- "id": "0088cd80-6150-4577-89a9-b28b06fea6b4",
- "name": "Informacion del empleado1",
- "retryOnFail": true,
- "waitBetweenTries": 2000,
- "credentials": {
- "httpBasicAuth": {
- "id": "vXrW3oJWVhNbzB07",
- "name": "GLM Credential"
- }
- }
- },
{
"parameters": {
"operation": "get",
@@ -7215,137 +6313,6 @@
}
}
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 3 }) }}",
- "options": {
- "query": "Entrenamiento"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2656,
- -784
- ],
- "id": "901ca3ad-1e76-41fe-a1ff-a55b0f5c1ea2",
- "name": "Get many events1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1872,
- -688
- ],
- "id": "2cd687f2-a8b5-4c46-854a-4f60b4d7107f",
- "name": "Entrenamiento español",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1872,
- -864
- ],
- "id": "01099730-b224-4b81-98cc-b924e2b02367",
- "name": "Entrenamiento ingles",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1zQabzR4ZpQVqYvJ0Cv5QTQ2TZRl9TahBJGfyZB4CRmI",
- "mode": "list",
- "cachedResultName": "GLM_GLMWay_Calendario de Entrenamientos",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1zQabzR4ZpQVqYvJ0Cv5QTQ2TZRl9TahBJGfyZB4CRmI/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": "gid=0",
- "mode": "list",
- "cachedResultName": "Hoja 1",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit#gid=0"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "col_1",
- "lookupValue": "2 July"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 2368,
- -1184
- ],
- "id": "ed7dc4ef-e1fe-4305-ba7e-a98b617ee095",
- "name": "Get row(s) in sheet2",
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
{
"parameters": {
"rule": {
@@ -7369,37 +6336,6 @@
"id": "7f7d71b2-6c53-49a2-92d8-e66b2d0bff54",
"name": "Schedule Trigger"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 4 }) }}",
- "options": {
- "fields": "",
- "query": "Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2464,
- -832
- ],
- "id": "77e81486-bffe-457d-8bc0-442c25ff4512",
- "name": "Entrenamiento ingles1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"url": "=https://glm.bamboohr.com/api/v1/employees/{{ $json.id }}?fields=supervisorEmail,hireDate,supervisorEId,jobTitle",
@@ -7466,40 +6402,6 @@
"id": "8a2be7cc-85ad-4e44-92a7-fe3f94df703f",
"name": "Hay coordinador?"
},
- {
- "parameters": {
- "conditions": {
- "options": {
- "caseSensitive": true,
- "leftValue": "",
- "typeValidation": "strict",
- "version": 3
- },
- "conditions": [
- {
- "id": "d7d68505-8c34-44cd-b771-56bef28ada41",
- "leftValue": "={{ $('Get an employee').item.json.workEmail }}",
- "rightValue": "",
- "operator": {
- "type": "string",
- "operation": "notEmpty",
- "singleValue": true
- }
- }
- ],
- "combinator": "and"
- },
- "options": {}
- },
- "type": "n8n-nodes-base.if",
- "typeVersion": 2.3,
- "position": [
- 2432,
- -1344
- ],
- "id": "deb40073-dc0e-41e4-ad7c-6df18de25b4f",
- "name": "Empleado le falta info?"
- },
{
"parameters": {
"content": "## Formato fecha\nyyyy-mm-dd\n",
@@ -7652,8 +6554,8 @@
},
"type": "n8n-nodes-base.stickyNote",
"position": [
- 640,
- -816
+ 784,
+ -640
],
"typeVersion": 1,
"id": "719365c8-8099-4108-a910-83b651d81181",
@@ -7677,7 +6579,7 @@
"parameters": [
{
"name": "number",
- "value": "={{ \"18097159076@s.whatsapp.net\" }}"
+ "value": "={{ \"18494105855@s.whatsapp.net\" }}"
},
{
"name": "mediatype",
@@ -7859,7 +6761,7 @@
"parameters": {
"content": "## Envio de formulario de evaluacion despues que la sesion finalize",
"height": 304,
- "width": 2720,
+ "width": 2976,
"color": 6
},
"type": "n8n-nodes-base.stickyNote",
@@ -7887,36 +6789,6 @@
"id": "cd2fe5c5-9963-410b-a61a-edc36b5aaed1",
"name": "Sticky Note5"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1200,
- -896
- ],
- "id": "e0cc1e60-9379-45fb-b7f4-6def9c3e9601",
- "name": "Entrenamiento ingles3",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"content": "## Completar datos y enviar invitacion",
@@ -8014,66 +6886,6 @@
"id": "ce9f31d4-454e-4e31-9a22-8173b3fae392",
"name": "Pais?1"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2240,
- -672
- ],
- "id": "00c87312-256a-4738-856d-e92b9e144c75",
- "name": "Entrenamiento español1",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "#TheGLMWay Training"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2240,
- -848
- ],
- "id": "b3c26eeb-2ff9-42c9-b5cc-fe0776e53c46",
- "name": "Entrenamiento ingles4",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"conditions": {
@@ -8125,7 +6937,7 @@
"parameters": [
{
"name": "number",
- "value": "={{ \"18097159076@s.whatsapp.net\" }}"
+ "value": "={{ \"18494105855@s.whatsapp.net\" }}"
},
{
"name": "mediatype",
@@ -8238,55 +7050,6 @@
"id": "b183c892-8822-4bc3-a92c-4410eac41a01",
"name": "Pais?"
},
- {
- "parameters": {
- "operation": "update",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "eventId": "3ul4moq4isoavr9jhqpcbs7juu_20260617T230000Z",
- "updateFields": {
- "attendeesUi": {
- "values": {
- "attendees": [
- ""
- ]
- }
- }
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1520,
- -928
- ],
- "id": "711b3353-6f75-4c6d-bef7-e704290787e8",
- "name": "Invitar con calendarios entrenamiento ingles",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "content": "## Invitar al nuevo ingreso a travez del calendario usando el id del evento, asi le aparece el evento",
- "height": 384
- },
- "type": "n8n-nodes-base.stickyNote",
- "position": [
- 1440,
- -1168
- ],
- "typeVersion": 1,
- "id": "304297ee-18fc-4cbd-8a01-b627ae08b991",
- "name": "Sticky Note7"
- },
{
"parameters": {
"amount": 2
@@ -8421,48 +7184,6 @@
}
}
},
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg",
- "mode": "list",
- "cachedResultName": "Calendario #TheGLMWay",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": 169172567,
- "mode": "list",
- "cachedResultName": "Coordinadores RRHH",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Xs-MkeXiZvWeJuwm-IblcI-ilr7lyhMtED0R7wczmRg/edit#gid=169172567"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "Pais",
- "lookupValue": "={{ $('Get an employee').item.json.location }}"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 1024,
- -688
- ],
- "id": "d565bfde-93eb-4b39-afc8-4b294c7e9df7",
- "name": "Obtener coordinador",
- "alwaysOutputData": true,
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
{
"parameters": {
"options": {}
@@ -8524,36 +7245,6 @@
"id": "4d94c907-8ab1-4213-be20-9e24173cf0a3",
"name": "Pais?2"
},
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 1008,
- -816
- ],
- "id": "516244e1-3e39-4905-9160-86af296a0479",
- "name": "Entrenamiento español3",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
{
"parameters": {
"assignments": {
@@ -9083,24 +7774,11 @@
"typeVersion": 1.3,
"position": [
-352,
- 1552
+ 1504
],
"id": "6951af7d-5098-4156-81bd-8f67034fcf70",
"name": "Schedule Trigger3"
},
- {
- "parameters": {
- "options": {}
- },
- "type": "n8n-nodes-base.splitInBatches",
- "typeVersion": 3,
- "position": [
- 704,
- 1376
- ],
- "id": "7545364a-df0a-4420-a1af-5bcd4f8c9602",
- "name": "Loop Over Items2"
- },
{
"parameters": {
"conditions": {
@@ -9192,45 +7870,11 @@
"typeVersion": 2.2,
"position": [
1520,
- 1536
+ 1488
],
"id": "13ee807a-f1cd-48ef-921b-7b5c260ba116",
"name": "Pais?3"
},
- {
- "parameters": {
- "conditions": {
- "options": {
- "caseSensitive": true,
- "leftValue": "",
- "typeValidation": "strict",
- "version": 2
- },
- "conditions": [
- {
- "id": "9674fd7e-dd62-42d4-8931-6c67e59e3dd7",
- "leftValue": "={{ $json.isValid }}",
- "rightValue": "Jamaica",
- "operator": {
- "type": "boolean",
- "operation": "true",
- "singleValue": true
- }
- }
- ],
- "combinator": "or"
- },
- "options": {}
- },
- "type": "n8n-nodes-base.if",
- "typeVersion": 2.2,
- "position": [
- 432,
- 1344
- ],
- "id": "0fea4950-f873-4375-8964-45cfc3fead02",
- "name": "Falta 48h para el evento?1"
- },
{
"parameters": {
"jsCode": "// Helper para parsear \"14 December\" → Date (año actual)\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const year = new Date().getFullYear();\n return new Date(`${month} ${day}, ${year}`);\n}\n\n// Formatear fecha como \"26 June\"\nfunction formatDate(date) {\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n return `${day} ${month}`;\n}\n\nconst fecha_sesion = $input.first().json.fecha_sesion_inscrito;\n\n// Fecha de hoy normalizada a medianoche\nconst hoy = new Date();\nhoy.setHours(0, 0, 0, 0);\n\nconst sesion = parseSessionDate(fecha_sesion);\nsesion.setHours(0, 0, 0, 0);\n\n// Diferencia en días\nconst diferenciaDias = Math.floor(\n (sesion - hoy) / (1000 * 60 * 60 * 24)\n);\n\n// True si es hoy (0 días) o mañana (1 día)\nconst isValid = diferenciaDias >= 0 && diferenciaDias <= 1;\n\nreturn [\n {\n json: {\n fecha_sesion,\n fecha_hoy: formatDate(hoy),\n diferenciaDias,\n isValid\n }\n }\n];"
@@ -9244,91 +7888,6 @@
"id": "bbd0558c-3b3a-462b-957c-83b1975e5413",
"name": "Calcular falta 24h o es el mismo dia"
},
- {
- "parameters": {
- "documentId": {
- "__rl": true,
- "value": "1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4",
- "mode": "list",
- "cachedResultName": "Empleados GLM Prueba",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit?usp=drivesdk"
- },
- "sheetName": {
- "__rl": true,
- "value": "gid=0",
- "mode": "list",
- "cachedResultName": "Hoja 1",
- "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DzUjeikfp8eSdFqEW0LEZZBkn13jI8Uhy15DjGZ2tK4/edit#gid=0"
- },
- "filtersUI": {
- "values": [
- {
- "lookupColumn": "cargo",
- "lookupValue": "Coordinador RRHH"
- }
- ]
- },
- "options": {}
- },
- "type": "n8n-nodes-base.googleSheets",
- "typeVersion": 4.7,
- "position": [
- 3856,
- 432
- ],
- "id": "ddfe7158-8cc6-440c-9e59-de97b7124eb8",
- "name": "Obtener coordinador2",
- "alwaysOutputData": true,
- "credentials": {
- "googleSheetsOAuth2Api": {
- "id": "8Pp0ek3NPsEkyXfY",
- "name": "Eidan - Google Sheets account"
- }
- }
- },
- {
- "parameters": {
- "operation": "getAll",
- "calendar": {
- "__rl": true,
- "value": "ethen@gomezleemarketing.com",
- "mode": "list",
- "cachedResultName": "ethen@gomezleemarketing.com"
- },
- "returnAll": true,
- "timeMax": "={{ $now.plus({ week: 2 }) }}",
- "options": {
- "query": "Entrenamiento #TheGLMWay"
- }
- },
- "type": "n8n-nodes-base.googleCalendar",
- "typeVersion": 1.3,
- "position": [
- 2464,
- -656
- ],
- "id": "98ab4271-94af-4a22-9882-b80f84be7c24",
- "name": "Entrenamiento español4",
- "credentials": {
- "googleCalendarOAuth2Api": {
- "id": "yEmGG4av5RxOK7wu",
- "name": "Eidan - Google Calendar account"
- }
- }
- },
- {
- "parameters": {
- "jsCode": "const monthNames = ['January','February','March','April','May','June','July',\n 'August','September','October','November','December'];\n\nreturn items.map(item => {\n const event = item.json;\n const startStr = event.start.dateTime || event.start.date;\n const datePart = startStr.split('T')[0]; // \"2026-06-21\"\n const [year, month, day] = datePart.split('-').map(Number);\n const formattedDate = `${day} ${monthNames[month - 1]}`;\n\n const summary = event.summary || '';\n const organizerName = event.organizer?.displayName \n || (event.organizer?.email ? event.organizer.email.split('@')[0] : '');\n\n let espanol = '';\n let english = '';\n\n if (summary.toLowerCase().includes('entrenamiento')) {\n espanol = organizerName;\n } else if (summary.toLowerCase().includes('training')) {\n english = organizerName;\n }\n\n return {\n json: {\n Fecha: formattedDate,\n Espanol: espanol,\n English: english\n }\n };\n});"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 4064,
- 432
- ],
- "id": "41289b04-a9f4-4abc-8816-5afccd0e7996",
- "name": "Code in JavaScript1"
- },
{
"parameters": {
"rule": {
@@ -9470,27 +8029,6 @@
"id": "ddcb9db1-2590-4364-aeeb-db79c35ea604",
"name": "Sticky Note10"
},
- {
- "parameters": {
- "operation": "get",
- "employeeId": "=50821",
- "options": {}
- },
- "type": "n8n-nodes-base.bambooHr",
- "typeVersion": 1,
- "position": [
- 432,
- -864
- ],
- "id": "4ac439e5-1b93-4355-a450-b019b63e9437",
- "name": "Get an employee2",
- "credentials": {
- "bambooHrApi": {
- "id": "VwYITXROyinOC4je",
- "name": "Eidan - BambooHR account"
- }
- }
- },
{
"parameters": {
"sendTo": "=eidan.then14@gmail.com",
@@ -9503,7 +8041,7 @@
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
- 1968,
+ 2032,
2848
],
"id": "3c22bc65-799f-4432-86fe-10ae92e036de",
@@ -9528,7 +8066,7 @@
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.2,
"position": [
- 1968,
+ 2032,
2672
],
"id": "4dfc0135-6886-4d33-9b2a-a26efbe72832",
@@ -9566,7 +8104,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 2192,
+ 2256,
2768
],
"id": "b7c02e2f-1382-4086-9059-cf75fee9d278",
@@ -9939,32 +8477,6 @@
"id": "8f80d9ca-1e4b-4753-b482-df7b0fd24f61",
"name": "Formatear fecha y detectar idioma"
},
- {
- "parameters": {
- "jsCode": "const start = $input.first().json.start?.dateTime || $input.first().json.start?.date;\nconst end = $input.first().json.end?.dateTime || $input.first().json.end?.date;\n\nfunction formatHora(dateTimeStr) {\n if (!dateTimeStr) return null;\n return dateTimeStr.split('T')[1].substring(0, 5);\n}\n\nreturn [{\n json: {\n hora_inicio: formatHora(start),\n hora_fin: formatHora(end)\n }\n}];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 3856,
- 288
- ],
- "id": "abdbae74-c0ab-4f9a-b9d8-73cef07748a2",
- "name": "Calcular fecha hireDate2"
- },
- {
- "parameters": {
- "jsCode": "const months = [\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];\n\nfunction formatearFecha(dateTimeStr) {\n if (!dateTimeStr) return null;\n const datePart = dateTimeStr.split('T')[0];\n const [year, month, day] = datePart.split('-');\n return `${parseInt(day, 10)} ${months[parseInt(month, 10) - 1]}`;\n}\n\nfunction detectarIdioma(summary) {\n if (!summary) return null;\n if (summary.includes(\"#TheGLMWay Training\")) return \"EN\";\n if (summary.includes(\"Entrenamiento #TheGLMWay\")) return \"ES\";\n return null;\n}\n\nfunction formatearHora(dateTimeStr) {\n if (!dateTimeStr) return null;\n const timePart = dateTimeStr.split('T')[1];\n if (!timePart) return null;\n return timePart.substring(0, 5);\n}\n\nconst output = [];\n\nfor (const item of $input.all()) {\n const event = item.json;\n\n const startRaw = event.start?.dateTime || event.start?.date;\n const endRaw = event.end?.dateTime || event.end?.date;\n const url = event.conferenceData?.entryPoints?.[0]?.uri || null;\n const idioma = detectarIdioma(event.summary);\n\n // Ignorar eventos vacíos o sin datos esenciales\n if (!event.summary || !startRaw) {\n console.log(\"Evento ignorado (vacío):\", JSON.stringify(event));\n continue;\n }\n\n output.push({\n json: {\n id: event.id,\n titulo: event.summary,\n idioma: idioma,\n fecha: formatearFecha(startRaw),\n hora_inicio: formatearHora(startRaw),\n hora_fin: formatearHora(endRaw),\n url: url,\n descripcion: event.description || null\n }\n });\n}\n\nconsole.log(`Sesiones procesadas: ${output.length}`);\nreturn output;\n\n// Agrega esto antes del return output\nconst resumen = output.map(i => ({\n meet_id: i.json.meet_id,\n titulo: i.json.titulo,\n fecha_sesion: i.json.fecha_sesion,\n hora_inicio: i.json.hora_inicio,\n hora_fin: i.json.hora_fin,\n enlace_reunion: i.json.enlace_reunion,\n idioma: i.json.idioma\n}));\nconsole.log(JSON.stringify(resumen));"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 4144,
- 192
- ],
- "id": "cded5025-8e1b-4609-b7c6-5acb81244bdf",
- "name": "Formatear fecha y detectar idioma1"
- },
{
"parameters": {
"jsCode": "const today = new Date();\ntoday.setHours(0, 0, 0, 0);\n\nconst sessions = $input.all();\n\n// Helper para parsear \"14 January\" → Date (año actual)\nfunction parseSessionDate(dateStr) {\n if (!dateStr) return null;\n const [day, month] = dateStr.split(' ');\n const year = new Date().getFullYear();\n return new Date(`${month} ${day}, ${year}`);\n}\n\n// Formatear fecha como \"26 June\"\nfunction formatDate(date) {\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'long' });\n return `${day} ${month}`;\n}\n\n// Iterar hasta encontrar la sesión que hace match con hoy\nlet matchedSession = null;\n\nfor (const item of sessions) {\n const sessionDate = parseSessionDate(item.json.fecha_sesion);\n if (!sessionDate) continue;\n\n sessionDate.setHours(0, 0, 0, 0);\n\n if (sessionDate.getTime() === today.getTime()) {\n matchedSession = item;\n break;\n }\n}\n\nreturn [\n {\n json: {\n today: formatDate(today),\n foundSession: !!matchedSession,\n session: matchedSession?.json ?? null\n }\n }\n];"
@@ -9987,8 +8499,8 @@
},
"type": "n8n-nodes-base.stickyNote",
"position": [
- 880,
- 2960
+ 928,
+ 2912
],
"typeVersion": 1,
"id": "a9266141-49ab-41f7-b8ab-dc45e746ed1c",
@@ -10007,7 +8519,7 @@
"typeVersion": 1,
"position": [
-192,
- 1552
+ 1504
],
"id": "a4fc1575-5326-467f-8b05-f8c9569cdca1",
"name": "Obtener sesiones",
@@ -10018,53 +8530,6 @@
}
}
},
- {
- "parameters": {
- "operation": "update",
- "tableId": "sesiones_glmway",
- "filters": {
- "conditions": [
- {
- "keyName": "fecha_sesion",
- "condition": "eq",
- "keyValue": "={{ $json.fecha_sesion_inscrito }}"
- }
- ]
- },
- "fieldsUi": {
- "fieldValues": [
- {}
- ]
- }
- },
- "type": "n8n-nodes-base.supabase",
- "typeVersion": 1,
- "position": [
- 3744,
- 272
- ],
- "id": "df865311-bf25-4b35-ac8a-da71a3d93e05",
- "name": "Añadir a listado de participantes1",
- "credentials": {
- "supabaseApi": {
- "id": "2PlsR6rpK7rQTIEn",
- "name": "Sofia test - Supabase account"
- }
- }
- },
- {
- "parameters": {
- "jsCode": "const item = $input.first().json;\nconst fecha_sesion = item.fecha_sesion;\n\n// Hoy\nconst hoy = new Date();\nhoy.setHours(0, 0, 0, 0);\n\n// Formatear hoy como \"26 June\"\nconst fecha_hoy = hoy.toLocaleDateString('en-GB', {\n day: 'numeric',\n month: 'long'\n});\n\n// Crear la fecha de la sesión usando el año actual\nlet sesion = new Date(`${fecha_sesion} ${hoy.getFullYear()}`);\nsesion.setHours(0, 0, 0, 0);\n\n// Si ya pasó este año, asumir el próximo\nif (sesion < hoy) {\n sesion = new Date(`${fecha_sesion} ${hoy.getFullYear() + 1}`);\n sesion.setHours(0, 0, 0, 0);\n}\n\n// Diferencia en días\nconst diferenciaDias = Math.floor(\n (sesion - hoy) / (1000 * 60 * 60 * 24)\n);\n\nconst isValid = diferenciaDias >= 0 && diferenciaDias <= 2;\n\n// Si no cumple la condición, no retornar nada\nif (!isValid) {\n return [];\n}\n\n// Retornar la sesión dentro de la llave \"sesion\"\nreturn [\n {\n json: {\n sesion: item,\n fecha_hoy,\n diferenciaDias,\n isValid\n }\n }\n];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 240,
- 1344
- ],
- "id": "e8d383b8-9081-4829-8516-a03f6f5a1b63",
- "name": "Calcular falta 48h o 24h"
- },
{
"parameters": {
"operation": "getAll",
@@ -10089,7 +8554,7 @@
"typeVersion": 1,
"position": [
464,
- 1536
+ 1488
],
"id": "0457dbf8-9c04-4f2d-9928-4f770eb51cc0",
"name": "Obtener coordinadores1",
@@ -10129,7 +8594,7 @@
"typeVersion": 2.3,
"position": [
208,
- 1552
+ 1504
],
"id": "334a5703-db8a-4a88-b528-8468ee61ddbc",
"name": "Hay inscritos en la sesion?"
@@ -10142,48 +8607,11 @@
"typeVersion": 2,
"position": [
656,
- 1536
+ 1488
],
"id": "3073d739-a2c7-4ba1-81bc-aeae266ad3ff",
"name": "Matchear coordinador y pais inscrito"
},
- {
- "parameters": {
- "operation": "update",
- "tableId": "coordinadores_rrhh_glmway",
- "filters": {
- "conditions": [
- {
- "keyName": "pais",
- "condition": "eq",
- "keyValue": "={{ Object.keys($json)[0] }}"
- }
- ]
- },
- "fieldsUi": {
- "fieldValues": [
- {
- "fieldId": "estado",
- "fieldValue": "notificado"
- }
- ]
- }
- },
- "type": "n8n-nodes-base.supabase",
- "typeVersion": 1,
- "position": [
- 2160,
- 1552
- ],
- "id": "0881ba84-bd04-4e91-9c09-0ba18e28ed28",
- "name": "Actualizar estado a notificado",
- "credentials": {
- "supabaseApi": {
- "id": "2PlsR6rpK7rQTIEn",
- "name": "Sofia test - Supabase account"
- }
- }
- },
{
"parameters": {
"conditions": {
@@ -10819,8 +9247,8 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
- 1536,
- 1936
+ 1840,
+ 1824
],
"id": "11458855-2bd1-4778-81f6-efe07ee1ee8b",
"name": "Enviar al espacio de prueba",
@@ -11094,44 +9522,6 @@
"name": "Enviar notifacion a glmway notificaciones",
"retryOnFail": true
},
- {
- "parameters": {
- "method": "POST",
- "url": "=https://chat.googleapis.com/v1/spaces/AAQAR2K6i8Y/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=yOTYTZ6rayK3NlOworCkaKMPCqssxjbokfKY3wFjeXg",
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "={{ $json }}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.2,
- "position": [
- 1920,
- 1456
- ],
- "id": "5d50cef9-0ebb-4f28-8deb-69c7feb6f62e",
- "name": "Enviar al espacio de prueba1",
- "retryOnFail": true
- },
- {
- "parameters": {
- "method": "POST",
- "url": "=https://chat.googleapis.com/v1/spaces/AAQAR2K6i8Y/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=yOTYTZ6rayK3NlOworCkaKMPCqssxjbokfKY3wFjeXg",
- "sendBody": true,
- "specifyBody": "json",
- "jsonBody": "={{ $json }}",
- "options": {}
- },
- "type": "n8n-nodes-base.httpRequest",
- "typeVersion": 4.2,
- "position": [
- 1920,
- 1632
- ],
- "id": "c83590cd-6e98-4e2d-81f6-6e2f204a948d",
- "name": "Enviar al espacio de prueba2",
- "retryOnFail": true
- },
{
"parameters": {
"jsCode": "// 1. Obtener datos de la sesión del nodo \"Calcular falta 48h o 24h1\"\nconst sessionNode = $('Calcular falta 48h o 24h1').first();\nconst sesion = sessionNode?.json?.sesion || {}; // Leído desde la raíz del JSON\n\n// 2. Contar participantes y construir de forma dinámica la lista por país\nlet totalParticipantes = 0;\nlet listaParticipantesTexto = \"\";\n\nif (sesion.participantes) {\n Object.keys(sesion.participantes).forEach(pais => {\n const listaPais = sesion.participantes[pais];\n if (Array.isArray(listaPais) && listaPais.length > 0) {\n totalParticipantes += listaPais.length;\n \n // Añadir el encabezado del país\n listaParticipantesTexto += `
📍 ${pais} (${listaPais.length}):
`;\n \n // Listar cada participante de ese país\n listaPais.forEach(p => {\n listaParticipantesTexto += `• ${p.nombre} (${p.departamento || 'Sin Depto'} | ${p.division || 'Sin Division'})
`;\n });\n }\n });\n}\n\n// 3. Obtener los contactId del nodo anterior para generar las menciones de los coordinadores\nlet menciones = \"\";\ntry {\n const itemsUnirDatos = $('Unir datos3').all(); // Asegúrate de verificar si tu nodo se llama Unir datos3 o similar\n const idsUnicos = [...new Set(\n itemsUnirDatos\n .map(item => item.json.contactId)\n .filter(id => id !== undefined && id !== null && id !== \"\")\n )];\n menciones = idsUnicos.map(id => ``).join(\" \");\n} catch (error) {\n menciones = \"\";\n}\n\n// 4. Construir cuerpo del mensaje con formato Google Chat Card\nconst body = {\n text: `🔔 *Aviso para Coordinadores RRHH* \\nEstimados ${menciones}, aquí está el listado de personas inscritas para la sesión de mañana.`,\n cardsV2: [\n {\n cardId: \"session-reminder-hr\",\n card: {\n header: {\n title: `🎓 Capacitación #TheGLMWay de mañana`,\n },\n sections: [\n {\n header: \"📈 Resumen de Asistencia\",\n widgets: [\n {\n textParagraph: {\n text: `Total inscritos: ${totalParticipantes} personas
` + \n listaParticipantesTexto\n }\n }\n ]\n }\n ]\n }\n }\n ]\n};\n\nreturn [{ json: body }];"
@@ -11140,7 +9530,7 @@
"typeVersion": 2,
"position": [
1744,
- 1632
+ 1584
],
"id": "87ace248-4ea5-406f-89da-88d450ad413e",
"name": "Formatear datos espanol2"
@@ -11153,7 +9543,7 @@
"typeVersion": 2,
"position": [
1744,
- 1456
+ 1408
],
"id": "bb4cbe19-9364-4c83-a309-5594d9c5a26b",
"name": "Formatear datos ingles2"
@@ -11166,7 +9556,7 @@
"typeVersion": 2,
"position": [
0,
- 1552
+ 1504
],
"id": "47542a5b-ebe1-4e85-8229-bb9aa7e1b744",
"name": "Calcular falta 48h o 24h1"
@@ -11184,7 +9574,7 @@
"typeVersion": 1,
"position": [
1200,
- 1536
+ 1488
],
"id": "f49640d2-f7a0-43da-b9e1-1da5dbe93a22",
"name": "Get a contact1",
@@ -11203,7 +9593,7 @@
"typeVersion": 2,
"position": [
1024,
- 1536
+ 1488
],
"id": "c17d8ecc-45f9-4c03-a4d4-88d90ae8a3ec",
"name": "Limpiar id1"
@@ -11216,7 +9606,7 @@
"typeVersion": 2,
"position": [
1360,
- 1536
+ 1488
],
"id": "73de340f-189b-4963-bdf6-9b1bfd603cd6",
"name": "Unir datos3"
@@ -11232,7 +9622,7 @@
"typeVersion": 4.2,
"position": [
864,
- 1536
+ 1488
],
"id": "949eb6ae-2aba-43d2-a262-f91313336d2f",
"name": "Obtener miembros RRHH Notificaciones",
@@ -11310,7 +9700,7 @@
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.4,
"position": [
- 368,
+ 432,
2752
],
"id": "c05fc7b5-5d4e-403b-aa67-49b7427f9b04",
@@ -11330,7 +9720,7 @@
"conditions": [
{
"keyName": "fecha_sesion",
- "keyValue": "={{ $('Prueba3').item.json.dateFormatted }}"
+ "keyValue": "={{ $('Buscar sesion con hora UTC').item.json.dateFormatted }}"
}
]
}
@@ -11338,7 +9728,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 736,
+ 800,
2752
],
"id": "e4115807-580d-4075-8d62-de14c174c43a",
@@ -11357,7 +9747,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 896,
+ 960,
2752
],
"id": "2e7c7d5a-13bf-40a0-bdf8-1f2f5b07188b",
@@ -11371,7 +9761,7 @@
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
- 1056,
+ 1120,
2752
],
"id": "8b9471a9-f616-414d-988a-8f9914d72db3",
@@ -11563,8 +9953,8 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 912,
- 3040
+ 960,
+ 2992
],
"id": "982ec4df-b792-46b9-bce5-ab6e8709a2a8",
"name": "Actualizar instructor de inscritos",
@@ -11575,19 +9965,6 @@
}
}
},
- {
- "parameters": {
- "jsCode": "// 1. Obtener los registros del nodo anterior\nconst records = $input.first().json.conferenceRecords || [];\n\n// 2. Extraer el valor directo de timestampRD\nconst timestampRD = $(\"Generar timestamp RD y UTC\").first().json.timestampRD;\n\n// Convertir a fecha/tiempo (JavaScript realiza el cálculo internamente en UTC)\nconst fechaObjetivoMs = new Date(timestampRD).getTime();\n\nlet sesionEncontrada = null;\nlet sesionMasCercana = null;\nlet menorDiferencia = Infinity;\n\n// 3. Iterar sobre las conferencias\nfor (const record of records) {\n if (!record.startTime || !record.endTime) continue;\n\n const startMs = new Date(record.startTime).getTime();\n const endMs = new Date(record.endTime).getTime();\n\n // Opción 1: Si timestampRD está DENTRO de la sesión (startTime <= timestampRD <= endTime)\n if (fechaObjetivoMs >= startMs && fechaObjetivoMs <= endMs) {\n sesionEncontrada = record;\n break; // Prioridad máxima, encontramos la sesión activa\n }\n\n // Opción 2: Buscar la más cercana mediante la diferencia al centro de la reunión\n const centroReunion = startMs + (endMs - startMs) / 2;\n const diferencia = Math.abs(fechaObjetivoMs - centroReunion);\n\n if (diferencia < menorDiferencia) {\n menorDiferencia = diferencia;\n sesionMasCercana = record;\n }\n}\n\n// Usar la sesión activa; si no hay ninguna activa en ese momento exacto, toma la más cercana\nconst match = sesionEncontrada || sesionMasCercana;\n\nif (!match) {\n return [];\n}\n\nconst startObj = new Date(match.startTime);\nconst endObj = new Date(match.endTime);\n\n// Formatear a \"15 July\" extrayendo día y mes individualmente según la zona de RD\nconst formatter = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"long\",\n timeZone: \"America/Santo_Domingo\"\n});\n\nconst parts = formatter.formatToParts(startObj);\nconst day = parts.find(p => p.type === 'day').value;\nconst month = parts.find(p => p.type === 'month').value;\nconst dateFormatted = `${day} ${month}`; // Forzado a \"15 July\"\n\n// 4. Retornar el resultado\nreturn [\n {\n json: {\n id: match.name ? match.name.split('/').pop() : \"\",\n name: match.name || \"\",\n space: match.space || \"\",\n dateFormatted: dateFormatted, // Ej: \"15 July\"\n startTimeRaw: match.startTime,\n endTimeRaw: match.endTime,\n startTimeLocalRD: startObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" }),\n endTimeLocalRD: endObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" })\n }\n }\n];"
- },
- "type": "n8n-nodes-base.code",
- "typeVersion": 2,
- "position": [
- 208,
- 2752
- ],
- "id": "881e05b0-c9fd-4799-b828-395b99f92a88",
- "name": "Prueba3"
- },
{
"parameters": {
"operation": "update",
@@ -11614,7 +9991,7 @@
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
- 1216,
+ 1280,
2752
],
"id": "d93b4d14-106f-4d05-b397-78ec6d0dc522",
@@ -11646,7 +10023,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 560,
+ 624,
2752
],
"id": "73c64bc3-4321-46d6-9d5b-ef74bd385b2c",
@@ -11742,7 +10119,7 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
- 1760,
+ 1824,
2752
],
"id": "5df50d37-798a-42f8-ab7b-2ae3f05610fd",
@@ -11755,7 +10132,7 @@
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
- 1616,
+ 1680,
2752
],
"id": "9c046113-3694-40f9-819c-42122ec117e5",
@@ -11789,7 +10166,7 @@
"type": "n8n-nodes-base.if",
"typeVersion": 2.3,
"position": [
- 1392,
+ 1456,
2752
],
"id": "a2011c37-b133-431b-b8ff-41b6a4bb4f10",
@@ -11829,6 +10206,145 @@
"name": "Eidan - Google Calendar account"
}
}
+ },
+ {
+ "parameters": {
+ "jsCode": "// 1. Obtener los registros del nodo anterior\nconst records = $input.first().json.conferenceRecords || [];\n\n// 2. Extraer el valor directo de timestampRD\nconst timestampRD = $(\"Generar timestamp RD y UTC\").first().json.timestampRD;\n\n// Convertir a fecha/tiempo (JavaScript realiza el cálculo internamente en UTC)\nconst fechaObjetivoMs = new Date(timestampRD).getTime();\n\nlet sesionEncontrada = null;\nlet sesionMasCercana = null;\nlet menorDiferencia = Infinity;\n\n// 3. Iterar sobre las conferencias\nfor (const record of records) {\n if (!record.startTime || !record.endTime) continue;\n\n const startMs = new Date(record.startTime).getTime();\n const endMs = new Date(record.endTime).getTime();\n\n // Opción 1: Si timestampRD está DENTRO de la sesión (startTime <= timestampRD <= endTime)\n if (fechaObjetivoMs >= startMs && fechaObjetivoMs <= endMs) {\n sesionEncontrada = record;\n break; // Prioridad máxima, encontramos la sesión activa\n }\n\n // Opción 2: Buscar la más cercana mediante la diferencia al centro de la reunión\n const centroReunion = startMs + (endMs - startMs) / 2;\n const diferencia = Math.abs(fechaObjetivoMs - centroReunion);\n\n if (diferencia < menorDiferencia) {\n menorDiferencia = diferencia;\n sesionMasCercana = record;\n }\n}\n\n// Usar la sesión activa; si no hay ninguna activa en ese momento exacto, toma la más cercana\nconst match = sesionEncontrada || sesionMasCercana;\n\nif (!match) {\n return [];\n}\n\nconst startObj = new Date(match.startTime);\nconst endObj = new Date(match.endTime);\n\n// Formatear a \"15 July\" extrayendo día y mes individualmente según la zona de RD\nconst formatter = new Intl.DateTimeFormat(\"en-US\", {\n day: \"numeric\",\n month: \"long\",\n timeZone: \"America/Santo_Domingo\"\n});\n\nconst parts = formatter.formatToParts(startObj);\nconst day = parts.find(p => p.type === 'day').value;\nconst month = parts.find(p => p.type === 'month').value;\nconst dateFormatted = `${day} ${month}`; // Forzado a \"15 July\"\n\n// 4. Retornar el resultado\nreturn [\n {\n json: {\n id: match.name ? match.name.split('/').pop() : \"\",\n name: match.name || \"\",\n space: match.space || \"\",\n dateFormatted: dateFormatted, // Ej: \"15 July\"\n startTimeRaw: match.startTime,\n endTimeRaw: match.endTime,\n startTimeLocalRD: startObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" }),\n endTimeLocalRD: endObj.toLocaleString(\"es-DO\", { timeZone: \"America/Santo_Domingo\" })\n }\n }\n];"
+ },
+ "type": "n8n-nodes-base.code",
+ "typeVersion": 2,
+ "position": [
+ 240,
+ 2752
+ ],
+ "id": "881e05b0-c9fd-4799-b828-395b99f92a88",
+ "name": "Buscar sesion con hora UTC"
+ },
+ {
+ "parameters": {
+ "httpMethod": "POST",
+ "path": "evaluacion-glmway",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.webhook",
+ "typeVersion": 2.1,
+ "position": [
+ -320,
+ 3104
+ ],
+ "id": "fe7c0429-6070-4181-ad6d-1a5a4888ce66",
+ "name": "Webhook1",
+ "webhookId": "14f1d226-12da-42c2-90d1-4d8fd5620cae"
+ },
+ {
+ "parameters": {
+ "content": "## Guardar conteo de evaluaciones han sido resueltas",
+ "height": 240,
+ "width": 608,
+ "color": 4
+ },
+ "type": "n8n-nodes-base.stickyNote",
+ "position": [
+ -384,
+ 3024
+ ],
+ "typeVersion": 1,
+ "id": "7d34e6af-6b75-4780-9f70-848d2045b123",
+ "name": "Sticky Note7"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "https://dbit.digitalcompass.agency/rest/v1/rpc/incrementar_evaluaciones_resueltas_glmway",
+ "sendHeaders": true,
+ "headerParameters": {
+ "parameters": [
+ {
+ "name": "apikey",
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ },
+ {
+ "name": "Authorization",
+ "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ }
+ ]
+ },
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.4,
+ "position": [
+ -112,
+ 3104
+ ],
+ "id": "59013746-bac2-4c90-a39e-3d7835ab6c31",
+ "name": "Incrementar conteo de evaluaciones respondidas"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "https://dbit.digitalcompass.agency/rest/v1/rpc/incrementar_evaluaciones_enviadas_glmway",
+ "sendHeaders": true,
+ "headerParameters": {
+ "parameters": [
+ {
+ "name": "apikey",
+ "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ },
+ {
+ "name": "Authorization",
+ "value": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJzZXJ2aWNlX3JvbGUiLAogICAgImlzcyI6ICJzdXBhYmFzZS1kZW1vIiwKICAgICJpYXQiOiAxNjQxNzY5MjAwLAogICAgImV4cCI6IDE3OTk1MzU2MDAKfQ.DaYlNEoUrrEn2Ig7tqibS-PHK5vgusbcbo7X36XVt4Q"
+ }
+ ]
+ },
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.4,
+ "position": [
+ 2448,
+ 2768
+ ],
+ "id": "5b1e1192-2e9b-44b2-9303-194b6266202b",
+ "name": "Incrementar conteo de evaluaciones enviadas"
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "=https://chat.googleapis.com/v1/spaces/AAQAQj1t9AA/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Bjwcj-R0V8RsffMTHW0JovFcjotMghLp8bQ-40sxyfI",
+ "sendBody": true,
+ "specifyBody": "json",
+ "jsonBody": "={{ $json }}",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.2,
+ "position": [
+ 1952,
+ 1408
+ ],
+ "id": "5d50cef9-0ebb-4f28-8deb-69c7feb6f62e",
+ "name": "Enviar notificacion a rrhh notificaciones",
+ "retryOnFail": true
+ },
+ {
+ "parameters": {
+ "method": "POST",
+ "url": "=https://chat.googleapis.com/v1/spaces/AAQAQj1t9AA/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=Bjwcj-R0V8RsffMTHW0JovFcjotMghLp8bQ-40sxyfI",
+ "sendBody": true,
+ "specifyBody": "json",
+ "jsonBody": "={{ $json }}",
+ "options": {}
+ },
+ "type": "n8n-nodes-base.httpRequest",
+ "typeVersion": 4.2,
+ "position": [
+ 1952,
+ 1584
+ ],
+ "id": "c83590cd-6e98-4e2d-81f6-6e2f204a948d",
+ "name": "Enviar notificacion a rrhh notificaciones1",
+ "retryOnFail": true
}
],
"connections": {
@@ -11938,11 +10454,6 @@
]
]
},
- "Informacion del supervisor": {
- "main": [
- []
- ]
- },
"Informacion extra del empleado": {
"main": [
[
@@ -12046,16 +10557,6 @@
]
]
},
- "Entrenamiento ingles": {
- "main": [
- []
- ]
- },
- "Entrenamiento español": {
- "main": [
- []
- ]
- },
"Calcular fecha hireDate1": {
"main": [
[
@@ -12103,16 +10604,6 @@
]
]
},
- "Entrenamiento español1": {
- "main": [
- []
- ]
- },
- "Entrenamiento ingles4": {
- "main": [
- []
- ]
- },
"Hay coordinador?1": {
"main": [
[
@@ -12204,11 +10695,6 @@
]
]
},
- "Obtener coordinador": {
- "main": [
- []
- ]
- },
"Loop Over Items1": {
"main": [
[],
@@ -12499,12 +10985,6 @@
]
]
},
- "Loop Over Items2": {
- "main": [
- [],
- []
- ]
- },
"Pais?3": {
"main": [
[
@@ -12523,12 +11003,6 @@
]
]
},
- "Falta 48h para el evento?1": {
- "main": [
- [],
- []
- ]
- },
"Calcular falta 24h o es el mismo dia": {
"main": [
[
@@ -12770,17 +11244,6 @@
]
]
},
- "Calcular falta 48h o 24h": {
- "main": [
- [
- {
- "node": "Falta 48h para el evento?1",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Obtener coordinadores1": {
"main": [
[
@@ -12815,11 +11278,6 @@
]
]
},
- "Actualizar estado a notificado": {
- "main": [
- []
- ]
- },
"Hay inscritos?": {
"main": [
[
@@ -13097,7 +11555,7 @@
"main": [
[
{
- "node": "Prueba3",
+ "node": "Buscar sesion con hora UTC",
"type": "main",
"index": 0
}
@@ -13228,33 +11686,11 @@
]
]
},
- "Enviar al espacio de prueba2": {
- "main": [
- [
- {
- "node": "Actualizar estado a notificado",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
- "Enviar al espacio de prueba1": {
- "main": [
- [
- {
- "node": "Actualizar estado a notificado",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Formatear datos ingles2": {
"main": [
[
{
- "node": "Enviar al espacio de prueba1",
+ "node": "Enviar notificacion a rrhh notificaciones",
"type": "main",
"index": 0
}
@@ -13265,7 +11701,7 @@
"main": [
[
{
- "node": "Enviar al espacio de prueba2",
+ "node": "Enviar notificacion a rrhh notificaciones1",
"type": "main",
"index": 0
}
@@ -13441,17 +11877,6 @@
]
]
},
- "Prueba3": {
- "main": [
- [
- {
- "node": "Obtener participantes",
- "type": "main",
- "index": 0
- }
- ]
- ]
- },
"Generar timestamp RD y UTC": {
"main": [
[
@@ -13527,7 +11952,13 @@
},
"Actualizar estado a recordado2": {
"main": [
- []
+ [
+ {
+ "node": "Incrementar conteo de evaluaciones enviadas",
+ "type": "main",
+ "index": 0
+ }
+ ]
]
},
"Termino evento": {
@@ -13540,18 +11971,50 @@
}
]
]
+ },
+ "Buscar sesion con hora UTC": {
+ "main": [
+ [
+ {
+ "node": "Obtener participantes",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ },
+ "Webhook1": {
+ "main": [
+ [
+ {
+ "node": "Incrementar conteo de evaluaciones respondidas",
+ "type": "main",
+ "index": 0
+ }
+ ]
+ ]
+ },
+ "Enviar notificacion a rrhh notificaciones": {
+ "main": [
+ []
+ ]
+ },
+ "Enviar notificacion a rrhh notificaciones1": {
+ "main": [
+ []
+ ]
}
},
"authors": "Eidan Then",
- "name": "Version 83052b6c",
+ "name": "Version c56efe26",
"description": "",
- "autosaved": false,
+ "autosaved": true,
"workflowPublishHistory": [
{
- "createdAt": "2026-07-27T18:59:46.228Z",
- "id": 3508,
+ "createdAt": "2026-07-27T21:54:34.952Z",
+ "id": 3536,
"workflowId": "F1iPg8hktNAebZua",
- "versionId": "83052b6c-cde6-459c-a163-5ebf7b2f030a",
+ "versionId": "c56efe26-f231-4faf-b54c-c98dcd8e734a",
"event": "activated",
"userId": "de14e7e5-491b-4983-abb2-f88af42e92fd"
}