🚛🗺️ Géocodage logistique en utilisant l'API Open Route et Google Sheets
Ceci est unIT Opsworkflow d'automatisation du domainecontenant 9 nœuds.Utilise principalement des nœuds comme Set, Wait, HttpRequest, GoogleSheets, ManualTrigger. 🚛🗺️ Géocodage logistique avec l'API Open Route et Google Sheets
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
Nœuds utilisés (9)
Catégorie
{
"meta": {
"instanceId": ""
},
"nodes": [
{
"id": "b1d00cd4-b9e8-4d84-b580-08368fbb9396",
"name": "Note adhésive 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
-160
],
"parameters": {
"color": 7,
"width": 540,
"height": 640,
"content": "### 1. Trigger the workflow\nThis starts by collecting all the addresses (with the country code) that need geocoding information.\n\n#### How to setup?\n\n- **Load records in the Google Sheet Node**:\n 1. Add your Google Sheet API credentials to access the Google Sheet file\n 2. Select the file using the list, an URL or an ID\n 3. Select the sheet in which you want to record your working sessions\n 4. Map the fields: **country**, **address** , **longitude**, **latitude**, **borough**, **neighbourhood**, **localadmin**\n [Learn more about the Google Sheet Node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets)\n\nThe last five fields must be left empty as they will be filled with the API outputs.\n"
},
"typeVersion": 1
},
{
"id": "32f84996-0480-4c0b-aab7-3f5ebca9dd4e",
"name": "Au clic sur 'Tester le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
60,
260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "fe628240-0550-42dd-a375-7ecba134fd6c",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
600,
-160
],
"parameters": {
"color": 7,
"width": 1120,
"height": 640,
"content": "### 2. Loop to collect GPS coordinates\n\n#### How to setup?\n- **Setup API Credentials**\n 1. Get your free API key: [Open Route API Documentation](https://openrouteservice.org/dev/#/api-docs)\n 2. Fill the API key in the HTTP request node\n- **Load records in the Google Sheet Node**:\n 1. Add your Google Sheet API credentials to access the Google Sheet file\n 2. Select the file using the list, an URL or an ID\n 3. Select the sheet in which you want to record your working sessions\n 4. List the fields to update: **longitude**, **latitude**, **borough**, **neighbourhood**, **localadmin**\n [Learn more about the Google Sheet Node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets)\n"
},
"typeVersion": 1
},
{
"id": "eac06796-f40d-4c94-96b2-4ad672053295",
"name": "Collecter les adresses",
"type": "n8n-nodes-base.googleSheets",
"position": [
340,
260
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1232640606,
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
}
},
"notesInFlow": true,
"typeVersion": 4.6
},
{
"id": "13198c2c-cdca-4a5e-893a-1fac24090f33",
"name": "Interroger Open Route API",
"type": "n8n-nodes-base.httpRequest",
"position": [
960,
280
],
"parameters": {
"url": "https://api.openrouteservice.org/geocode/search",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "api_key"
},
{
"name": "text",
"value": "={{ $json.address }}"
},
{
"name": "boundary.country",
"value": "={{ $json.country }}"
},
{
"name": "sources",
"value": "openstreetmap"
},
{
"name": "size",
"value": "1"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json; charset=utf-8"
},
{
"name": "Accept",
"value": "application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8"
}
]
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "d0ad6f7e-8049-45c4-8022-8c16a8f71392",
"name": "Boucler sur les adresses",
"type": "n8n-nodes-base.splitInBatches",
"position": [
760,
260
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "c84f27c6-3905-455a-b8a7-bb1d6bffafe0",
"name": "Sauvegarder les résultats",
"type": "n8n-nodes-base.googleSheets",
"position": [
1380,
280
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('Loop Over Addresses').item.json.id }}",
"borough": "={{ $json.borough }}",
"latitude": "={{ $json.latitude }}",
"longitude": "={{ $json.longitude }}",
"localadmin": "={{ $json.localadmin }}",
"neighbourhood": "={{ $json.neighbourhood }}"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "country",
"type": "string",
"display": true,
"required": false,
"displayName": "country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "address",
"type": "string",
"display": true,
"required": false,
"displayName": "address",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "longitude",
"type": "string",
"display": true,
"required": false,
"displayName": "longitude",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "latitude",
"type": "string",
"display": true,
"required": false,
"displayName": "latitude",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "borough",
"type": "string",
"display": true,
"required": false,
"displayName": "borough",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "neighbourhood",
"type": "string",
"display": true,
"required": false,
"displayName": "neighbourhood",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "localadmin",
"type": "string",
"display": true,
"required": false,
"displayName": "localadmin",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1232640606,
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
}
},
"notesInFlow": true,
"typeVersion": 4.6
},
{
"id": "6fa85604-4db7-431d-b0fd-b6cbb1773c12",
"name": "Extraire les résultats",
"type": "n8n-nodes-base.set",
"position": [
1180,
280
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e4c92077-f294-4e49-8276-20d1441c0c2c",
"name": "longitude",
"type": "string",
"value": "={{ $json.features[0].geometry.coordinates[0] }}"
},
{
"id": "899e5304-e7a1-4ce1-bf9a-f403d74934fb",
"name": "latitude",
"type": "string",
"value": "={{ $json.features[0].geometry.coordinates[1] }}"
},
{
"id": "5b35642b-dda4-42b8-b7bb-1275616bfb59",
"name": "borough",
"type": "string",
"value": "={{ $json.features[0].properties.borough }}"
},
{
"id": "aa74bd9a-f543-48e1-a69b-0e6472bda053",
"name": "neighbourhood",
"type": "string",
"value": "={{ $json.features[0].properties.neighbourhood }}"
},
{
"id": "7f303dc8-4e28-4d46-8e3e-9db00dbcac3a",
"name": "localadmin",
"type": "string",
"value": "={{ $json.features[0].properties.localadmin }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "71c85728-f291-4a67-8d0d-8c7fcd38905d",
"name": "5 secondes",
"type": "n8n-nodes-base.wait",
"position": [
1560,
280
],
"webhookId": "6ecebf96-14ed-4c7b-b467-eb48c143408e",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "7ca2b5ea-9af8-425d-958e-2f6ffe01656e",
"name": "Note adhésive 4",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
500
],
"parameters": {
"width": 580,
"height": 380,
"content": "### [Check the Tutorial](https://www.youtube.com/watch?v=IlblIlKcL0k)\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"71c85728-f291-4a67-8d0d-8c7fcd38905d": {
"main": [
[
{
"node": "d0ad6f7e-8049-45c4-8022-8c16a8f71392",
"type": "main",
"index": 0
}
]
]
},
"c84f27c6-3905-455a-b8a7-bb1d6bffafe0": {
"main": [
[
{
"node": "71c85728-f291-4a67-8d0d-8c7fcd38905d",
"type": "main",
"index": 0
}
]
]
},
"6fa85604-4db7-431d-b0fd-b6cbb1773c12": {
"main": [
[
{
"node": "c84f27c6-3905-455a-b8a7-bb1d6bffafe0",
"type": "main",
"index": 0
}
]
]
},
"eac06796-f40d-4c94-96b2-4ad672053295": {
"main": [
[
{
"node": "d0ad6f7e-8049-45c4-8022-8c16a8f71392",
"type": "main",
"index": 0
}
]
]
},
"d0ad6f7e-8049-45c4-8022-8c16a8f71392": {
"main": [
[],
[
{
"node": "13198c2c-cdca-4a5e-893a-1fac24090f33",
"type": "main",
"index": 0
}
]
]
},
"13198c2c-cdca-4a5e-893a-1fac24090f33": {
"main": [
[
{
"node": "6fa85604-4db7-431d-b0fd-b6cbb1773c12",
"type": "main",
"index": 0
}
]
]
},
"32f84996-0480-4c0b-aab7-3f5ebca9dd4e": {
"main": [
[
{
"node": "eac06796-f40d-4c94-96b2-4ad672053295",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Opérations IT
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Samir Saci
@samirsaciAutomation, AI and Analytics for Supply Chain & Business Optimization Helping businesses streamline operations using n8n, AI agents, and data science to enhance efficiency and sustainability. Linkedin: www.linkedin.com/in/samir-saci
Partager ce workflow