Connect Google Maps to Google Sheets
Turn a list of addresses into latitude and longitude, or coordinates back into addresses, with the parsed components split into their own columns. Geocoding only — this is not a Places or routing connector.
What you can pull from Google Maps
Google Maps exposes 1 object you can pull, each as its own job. Every run pulls the records into a flat table, so nested fields arrive as ordinary columns that Google Sheets can sort, filter and total without further work.
Geocoding results
One row per input. The input address is echoed back verbatim so the frame can be joined onto whatever you sent, and the address components are split into their own columns rather than left as one string.
| Column | Type | Notes |
|---|---|---|
| input_address | string | Echoed verbatim, so results join back onto your input |
| status | string | OK or ZERO_RESULTS are normal per-row answers, not failures |
| formatted_address | string | — |
| latitude | float | — |
| longitude | float | — |
| place_id | string | — |
| location_type | string | ROOFTOP, RANGE_INTERPOLATED, GEOMETRIC_CENTER or APPROXIMATE |
| locality | string | — |
| postal_code | string | — |
| administrative_area_level_1 | string | — |
| country | string | — |
| country_code | string | — |
| partial_match | boolean | Google matched something, but not confidently |
Options you can set
- mode
- 'forward' geocodes addresses into coordinates; 'reverse' turns lat/lng pairs into addresses — defaults to
forward - components
- Component filter, e.g. country:GB|postal_code:SW1. Narrows results without making the address more specific
- region
- ccTLD region bias, e.g. gb - influences ambiguous place names
- language
- Language for returned addresses
- rate_per_second
- Outbound request pacing, up to 50 — defaults to
10 - on_row_error
- fail_fast, or continue past a transient per-row failure — defaults to
fail_fast
How it lands in Google Sheets
Google Sheets accepts append and overwrite writes. Overwrite replaces the target range, which suits a snapshot; append adds rows underneath, which suits a log you are accumulating. There is no upsert here, so rows are added or replaced rather than merged.
- Append adds rows below existing content; overwrite replaces the target range.
- No upsert: a spreadsheet has no primary key, so there is nothing to merge on. Use Airtable or Postgres if rows must be updated in place.
- Google caps a spreadsheet at 10 million cells across all tabs. Filter before writing rather than after.
Authentication
Google Maps authenticates with an API key held as a stored connection, so it never appears in a spreadsheet cell, a formula, or a shared copy of a sheet.
Keeping runs incremental
Not for this source: Each run geocodes the inputs it is given. Where that is expensive, narrow the job itself and run it less often.
Because Google Sheets has no upsert, decide what a re-run should mean before you schedule it. Overwrite keeps a current snapshot; append accumulates history and will grow without bound.
Limits and pacing
These are the provider-side ceilings that shape a schedule, not ours. Knowing them up front is the difference between a job that runs quietly every morning and one that starts failing the week your data grows.
| Limit | Value | Applies to |
|---|---|---|
| Inputs per run About 25 seconds at the default pacing, and it keeps the per-run bill bounded on an API that charges per request. | 250 | Google Maps |
| Request pacing Defaults to 10. | up to 50/second | Google Maps |
Common gotchas
Most of what goes wrong with a scheduled sync is not a bug — it is a detail of how one side behaves that nobody wrote down. These are the ones that come up for this pair.
ZERO_RESULTS is an answer, not an error
An address Google cannot place returns a row with status ZERO_RESULTS rather than failing the run. Filter on status before you trust the coordinates.
partial_match means "close enough, probably"
Google matched something but was not confident. On a list of user-typed addresses these are the rows worth reviewing by hand.
Capped at 250 inputs per run
For a larger backlog, batch it across scheduled runs rather than expecting one job to geocode everything.
An open-ended range beats a padded one
Writing to A2:D is better than A2:D1000 for appends: the padded form reserves rows you may not need and makes the append boundary ambiguous.
Set it up in four steps
- 1
Connect Google Maps
Your own Google Maps API key, stored as a connection. Billing and quota are yours, on your Google Cloud project.
- 2
Connect Google Sheets
Connect your Google account once. Paste a spreadsheet URL or ID.
- 3
Shape the data
Select the columns you want, filter rows, cast types and add computed fields. Everything else is dropped before it reaches the destination.
- 4
Schedule it
Run once, or on a cron. Every run refreshes Google Sheets with the latest Google Maps data.
Do I need an add-on or extension for this?
No. The job runs server-side and writes into Google Sheets through its API, so there is nothing installed in the spreadsheet itself. It keeps running when nobody has the file open, and a copy of the file does not need anything installed to work.
How often does the data refresh?
On whatever schedule you set with a cron expression — hourly, daily, or a specific time on specific days. Each run pulls the latest from Google Maps.
Do I need to write any code?
No. You connect both sides, map the fields in a wizard and set a schedule. Computed fields accept small expressions — abs, round, min, max, len — but there is nothing to host or maintain.
Who pays for the geocoding?
You do, on your own Google Cloud project, with your own key. Maps charges per request, which is why a run is capped at 250 inputs rather than being allowed to run away.
Can it look up businesses or directions?
No. This is the Geocoding API only - addresses to coordinates and back. Places and routing are deliberately out of scope.
Do I have to give access to my whole Google Drive?
No. Only the spreadsheets scope is requested. The Drive scope that most spreadsheet tools ask for is a restricted scope granting read access to every file you own; it is deliberately not requested here, which is why you paste a spreadsheet URL rather than browsing Drive.
Will this keep working if I copy the sheet?
The job writes to a specific spreadsheet ID, so a copy will not receive data until you point a job at it. Nothing is installed in the file itself, though, so copying never breaks the original.
Is the Google Maps connector free to use?
You can connect Google Maps and start syncing on the free plan.
Other sources into Google Sheets
Related reading
Export Stripe data to Google Sheets
Stripe's dashboard exports are manual and stale the moment you download them. Here is how to keep customers, invoices and charges fresh in a sheet instead.
Import a CSV from a URL into Airtable
Point a job at a CSV link and it re-reads it on your schedule — no download, no manual import. Here is the setup, and the field-type trap to avoid first.
Get data into Google Sheets without an add-on
Every major Sheets data tool is an add-on you install, authorise and keep updated inside the spreadsheet. Here is how to schedule the same imports without one.