Workflow: develop a modular n8n workflow that supports Limit Code Automation Scheduled
Integrations: code, googleSheets, limit, removeDuplicates, scheduleTrigger, set, sort, strava

{"nodes": [{"id": "fc128eed-1666-46b8-8feb-e6ddf05e85d1", "name": "Schedule Trigger", "type": "n8n-nodes-base.scheduleTrigger", "position": [380, 240], "parameters": {"rule": {"interval": [{"field": "hours", "hoursInterval": 2}]}}, "typeVersion": 1.2}, {"id": "830708eb-197b-4bf7-95da-893d78329ab2", "name": "Strava", "type": "n8n-nodes-base.strava", "position": [380, 480], "parameters": {"limit": 10, "operation": "getAll"}, "typeVersion": 1.1}, {"id": "de776ebf-3ad5-4c4c-b0c8-7bc74cba5446", "name": "Code", "type": "n8n-nodes-base.code", "position": [380, 740], "parameters": {"jsCode": "// Obt\u00e9n los items del nodo \"Strava\"\nconst stravaItems = $('strava_last').all();\n\n// Obt\u00e9n los items del nodo \"ultimas_id\"\nconst ultimasGuardadasItems = $('saved_last').all();\n\n// Extrae las referencias guardadas en un Set, asegurando el formato como cadena\nconst referenciasGuardadas = new Set(\n    ultimasGuardadasItems.map(item => String(item.json.id))\n);\n\n// Filtra los items de \"Strava\" cuyos IDs no est\u00e9n en las referencias guardadas\nconst filteredItems = stravaItems.filter(item => {\n    // Convertir el ID actual de Strava a cadena para comparar correctamente\n    return !referenciasGuardadas.has(String(item.json.id));\n});\n\n// Depuraci\u00f3n: imprime las referencias y los resultados\nconsole.log('Referencias guardadas:', [...referenciasGuardadas]);\nconsole.log('Items filtrados:', filteredItems);\n\n// Devuelve los items filtrados\nreturn filteredItems;\n\n\n"}, "typeVersion": 2}, {"id": "c8a93e6e-67fc-4f6d-bcde-83d3a885c622", "name": "Google Sheets", "type": "n8n-nodes-base.googleSheets", "position": [900, 740], "parameters": {"columns": {"value": {"Kms": "={{ $json.distancia }}", "Ref": "={{ $json.id }}", "Fecha": "={{ $json.fecha }}", "Track": "=http://www.strava.com/activities/{{ $json.id }}", "Tiempo": "={{ $json.tiempo }}", "Desnivel": "={{ $json.elevacion }}"}, "schema": [{"id": "Fecha", "type": "string", "display": true, "required": false, "displayName": "Fecha", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Kms", "type": "string", "display": true, "required": false, "displayName": "Kms", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Tiempo", "type": "string", "display": true, "required": false, "displayName": "Tiempo", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Ref", "type": "string", "display": true, "removed": false, "required": false, "displayName": "Ref", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Track", "type": "string", "display": true, "required": false, "displayName": "Track", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Bicicleta", "type": "string", "display": true, "required": false, "displayName": "Bicicleta", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Terreno", "type": "string", "display": true, "required": false, "displayName": "Terreno", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "Desnivel", "type": "string", "display": true, "required": false, "displayName": "Desnivel", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "defineBelow", "matchingColumns": []}, "options": {}, "operation": "append", "sheetName": {"__rl": true, "mode": "list", "value": 419561402, "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit#gid=419561402", "cachedResultName": "n8n"}, "documentId": {"__rl": true, "mode": "list", "value": "159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit?usp=drivesdk", "cachedResultName": "Sherlo_Bike"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "tyg7FJlIITkSazyi", "name": "Nik's Google"}}, "typeVersion": 4.5}, {"id": "0ce07d54-97af-4e88-9d27-452191a0b3ba", "name": "strava_last", "type": "n8n-nodes-base.set", "position": [1420, 480], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "423ae4b8-287c-4dc1-b32b-d1b6f1f45efa", "name": "id", "type": "number", "value": "={{ $json.id }}"}, {"id": "595802d2-17d0-40be-9e43-d655ffbf4ce0", "name": "fecha", "type": "string", "value": "={{ DateTime.fromISO($json.start_date_local).toFormat('d/M/yyyy') }}"}, {"id": "4b39d783-19f2-4a7e-b0e6-dbe2b98f1ae0", "name": "distancia", "type": "number", "value": "={{ Math.round($json.distance / 100) / 10 }}"}, {"id": "2f321dc0-435f-4b4d-866c-091ff9eaf9df", "name": "elevacion", "type": "number", "value": "={{ Math.round($json.total_elevation_gain) }}"}, {"id": "ba1bb089-5ae7-4e42-ac65-07323c4e1842", "name": "tiempo", "type": "string", "value": "={{ `${Math.floor($json.moving_time / 3600)}:${Math.floor(($json.moving_time % 3600) / 60).toString().padStart(2, '0')}:${($json.moving_time % 60).toString().padStart(2, '0')}` }}\n"}]}}, "typeVersion": 3.4}, {"id": "490f7be9-73c9-4431-8b83-fcdbbcc283eb", "name": "Remove Duplicates", "type": "n8n-nodes-base.removeDuplicates", "position": [900, 480], "parameters": {"compare": "selectedFields", "options": {}, "fieldsToCompare": "id"}, "typeVersion": 2}, {"id": "2d1c4dc5-2baa-4c89-a312-4b40381d4e5d", "name": "activities", "type": "n8n-nodes-base.googleSheets", "position": [660, 240], "parameters": {"options": {}, "sheetName": {"__rl": true, "mode": "list", "value": 419561402, "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit#gid=419561402", "cachedResultName": "n8n"}, "documentId": {"__rl": true, "mode": "list", "value": "159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/159k8cDL8hZooz-dsHE6ueWf68mBkHhxVCKnWm-lYLqs/edit?usp=drivesdk", "cachedResultName": "Sherlo_Bike"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "tyg7FJlIITkSazyi", "name": "Nik's Google"}}, "typeVersion": 4.5}, {"id": "2c7b7939-4ca1-4868-92bf-5fd7384a1103", "name": "sort_saved", "type": "n8n-nodes-base.sort", "position": [900, 240], "parameters": {"options": {}, "sortFieldsUi": {"sortField": [{"fieldName": "Ref"}]}}, "typeVersion": 1}, {"id": "4e1d9064-6dda-4a01-af48-f278792f8b6b", "name": "last_saved", "type": "n8n-nodes-base.limit", "position": [1160, 240], "parameters": {"keep": "lastItems", "maxItems": 10}, "typeVersion": 1}, {"id": "6eb2053a-1101-477b-86e9-113813be2d92", "name": "saved_last", "type": "n8n-nodes-base.set", "position": [1420, 240], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "50097932-ab91-4af7-9412-925fab1982f0", "name": "id", "type": "string", "value": "={{ $json.Ref }}"}]}}, "typeVersion": 3.4}, {"id": "afd986f1-0c49-4a69-b948-aefcbff1010f", "name": "sort_strava", "type": "n8n-nodes-base.sort", "position": [660, 480], "parameters": {"options": {}, "sortFieldsUi": {"sortField": [{"fieldName": "id"}]}}, "typeVersion": 1}, {"id": "16094d29-f35b-492c-9d93-3145dab30cd3", "name": "last_strava", "type": "n8n-nodes-base.limit", "position": [1160, 480], "parameters": {"keep": "lastItems", "maxItems": 10}, "typeVersion": 1}, {"id": "9986360b-fcd3-42f4-ad13-aea69f6d1a80", "name": "sort_results", "type": "n8n-nodes-base.sort", "position": [660, 740], "parameters": {"options": {}, "sortFieldsUi": {"sortField": [{"fieldName": "id"}]}}, "typeVersion": 1}], "pinData": {}, "connections": {"Code": {"main": [[{"node": "sort_results", "type": "main", "index": 0}]]}, "Strava": {"main": [[{"node": "sort_strava", "type": "main", "index": 0}]]}, "activities": {"main": [[{"node": "sort_saved", "type": "main", "index": 0}]]}, "last_saved": {"main": [[{"node": "saved_last", "type": "main", "index": 0}]]}, "saved_last": {"main": [[{"node": "Strava", "type": "main", "index": 0}]]}, "sort_saved": {"main": [[{"node": "last_saved", "type": "main", "index": 0}]]}, "last_strava": {"main": [[{"node": "strava_last", "type": "main", "index": 0}]]}, "sort_strava": {"main": [[{"node": "Remove Duplicates", "type": "main", "index": 0}]]}, "strava_last": {"main": [[{"node": "Code", "type": "main", "index": 0}]]}, "sort_results": {"main": [[{"node": "Google Sheets", "type": "main", "index": 0}]]}, "Schedule Trigger": {"main": [[{"node": "activities", "type": "main", "index": 0}]]}, "Remove Duplicates": {"main": [[{"node": "last_strava", "type": "main", "index": 0}]]}}}