🚛🗺️ Geocodierung für Logistik mit Open Route API und Google Sheets

Fortgeschritten

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

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten

Kategorie

Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "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![Thumbnail](https://www.samirsaci.com/content/images/2025/06/image-10.png)"
      },
      "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
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

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.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes9
Kategorie1
Node-Typen7
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Samir Saci

Samir Saci

@samirsaci

Automation, 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

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34