🚛🗺️ Geocodierung für Logistik mit Open Route API und Google Sheets
Dies ist ein IT Ops-Bereich Automatisierungsworkflow mit 9 Nodes. Hauptsächlich werden Set, Wait, HttpRequest, GoogleSheets, ManualTrigger und andere Nodes verwendet. 🚛🗺️ Logistisches Geocoding mit Open Route API und Google Sheets
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (9)
Kategorie
{
"meta": {
"instanceId": ""
},
"nodes": [
{
"id": "b1d00cd4-b9e8-4d84-b580-08368fbb9396",
"name": "Notiz2",
"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": "Bei Klick auf ‚Workflow testen‘",
"type": "n8n-nodes-base.manualTrigger",
"position": [
60,
260
],
"parameters": {},
"typeVersion": 1
},
{
"id": "fe628240-0550-42dd-a375-7ecba134fd6c",
"name": "Notiz",
"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": "Adressen sammeln",
"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": "Open Route API abfragen",
"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": "Adressen durchlaufen",
"type": "n8n-nodes-base.splitInBatches",
"position": [
760,
260
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "c84f27c6-3905-455a-b8a7-bb1d6bffafe0",
"name": "Ergebnisse speichern",
"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": "Ergebnisse extrahieren",
"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 Sekunden",
"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": "Notiz4",
"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
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - IT-Betrieb
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
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
Diesen Workflow teilen