AutomationFlowsEmail & Gmail › Convert Addresses to Latlong with Google Sheets and Google Maps API

Convert Addresses to Latlong with Google Sheets and Google Maps API

ByBoriwat Chanruang @boriwatopal on n8n.io

This template automates the process of converting a list of addresses into their latitude and longitude (LatLong) coordinates using Google Sheets and the Google Maps API. It's designed for businesses, developers, and analysts who need accurate geolocation data for use cases like…

Event trigger★★☆☆☆ complexity4 nodesHTTP RequestGoogle Sheets
Email & Gmail Trigger: Event Nodes: 4 Complexity: ★★☆☆☆ Added:

This workflow corresponds to n8n.io template #2739 — we link there as the canonical source.

This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "7ijhwXKPf6M2ZUBM",
  "name": "Convert Addresses to LatLong with Google Sheets and Google Maps API",
  "tags": [],
  "nodes": [
    {
      "id": "9465735e-5d1d-4c93-b407-13ef79144f92",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -340,
        20
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "4041b7fa-c47e-44c2-b296-2913e8551c61",
      "name": "Using Google Map API to Return Lat Long Back",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        200,
        -40
      ],
      "parameters": {
        "url": "https://maps.googleapis.com/maps/api/place/textsearch/json",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "={{ $json.Address }}"
            },
            {
              "name": "key",
              "value": "AIzaYOUR_GOOGLE_API_KEY_HERE"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "20b26d33-2e4a-43ad-bc0f-bc510f02dbd0",
      "name": "Update Lat-Long in Each Places",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        540,
        -40
      ],
      "parameters": {
        "columns": {
          "value": {
            "Latlong": "={{ $json.results[0].geometry.location.lat }},{{ $json.results[0].geometry.location.lng }}",
            "row_number": "={{ $('Extract The Places from Google Sheet').item.json.row_number }}"
          },
          "schema": [
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Latlong",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Latlong",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "row_number"
          ]
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1738976351,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM/edit#gid=1738976351",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM/edit?usp=drivesdk",
          "cachedResultName": "Latlong Testing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "29f53c52-0cb3-44ae-85ad-a9f2cded8334",
      "name": "Extract The Places from Google Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -120,
        -20
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1738976351,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM/edit#gid=1738976351",
          "cachedResultName": "Sheet2"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15Fz57qiARIJ6R5OzBAVgiAHnU8sOSX8eYFEP6thOrMM/edit?usp=drivesdk",
          "cachedResultName": "Latlong Testing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "dad3affe-47d9-475e-bd8a-cf4a81eb0fde",
  "connections": {
    "Update Lat-Long in Each Places": {
      "main": [
        []
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Extract The Places from Google Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract The Places from Google Sheet": {
      "main": [
        [
          {
            "node": "Using Google Map API to Return Lat Long Back",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Using Google Map API to Return Lat Long Back": {
      "main": [
        [
          {
            "node": "Update Lat-Long in Each Places",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This template automates the process of converting a list of addresses into their latitude and longitude (LatLong) coordinates using Google Sheets and the Google Maps API. It's designed for businesses, developers, and analysts who need accurate geolocation data for use cases like…

Source: https://n8n.io/workflows/2739/ — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Marketing Teams Email Marketers Small Business Owners Community Managers Read from Google Sheets: The workflow begins by reading all contact rows from your designated Google Sheet. Check for Existing

Google Sheets, Mailer Lite, HTTP Request
Email & Gmail

Gumroad sale trigger. Uses httpRequest, gumroadTrigger, googleSheets, stickyNote. Event-driven trigger; 8 nodes.

HTTP Request, Gumroad Trigger, Google Sheets +1
Email & Gmail

When someone makes a purchase on your Gumroad store, this n8n workflow instantly adds that customer to the right MailerLite group (so your nurture sequence starts on time) and writes the sale details

HTTP Request, Gumroad Trigger, Google Sheets +1
Email & Gmail

This workflow automates the repetitive task of invoicing, turning a manual process into an efficient, hands-free operation.

Google Sheets Trigger, HTTP Request, Gmail +1
Email & Gmail

Splitout Code. Uses manualTrigger, httpRequest, stickyNote, splitOut. Event-driven trigger; 46 nodes.

HTTP Request, Execute Workflow Trigger, Gmail +1