Как геокодировать адреса в Google Sheets: 4 метода, которые работают
Как геокодировать адреса в Google Sheets: CSV, формула =GEOCODE(), пакетный Apps Script и обратное геокодирование. 100 строк бесплатно в день.
Если у вас есть Google Sheets с адресами и вам нужны координаты широты/долготы, вы попали по адресу. Будь то картирование клиентов, планирование маршрутов доставки или создание локатора магазинов, геокодирование в Google Sheets — одна из самых распространённых задач работы с данными, которой никто не учит делать правильно.
Проблема? В Google Sheets нет встроенной функции геокодирования. Нет формулы =GEOCODE(), которая ждёт вас. Но есть четыре практических метода, от полностью без кода до автоматизированной пакетной обработки.
В этом руководстве я покажу каждый подход к геокодированию адресов в Google Sheets — от простого копирования-вставки до пользовательских функций Apps Script. Все примеры кода реальные и готовы к использованию с платформой CSV2GEO.
Начнём.
Кому нужно геокодировать адреса в Google Sheets?
Прежде чем перейти к методам, вот кому это обычно необходимо:
Маркетинговые команды
Картирование местоположений клиентов для таргетированных региональных кампаний.
Службы доставки
Преобразование адресов доставки в координаты для планирования маршрутов.
Агентства недвижимости
Геокодирование объявлений для интерактивных карт поиска недвижимости.
Исследователи
Анализ географических данных из опросов или публичных реестров.
Электронная коммерция
Создание локаторов магазинов и расчёт зон доставки.
Здравоохранение
Картирование пациентов для анализа доступности и планирования учреждений.
Что общего? У вас есть адреса в таблице. Вам нужны координаты. И вы не хотите платить Google 5$ за 1 000 запросов.
Метод 1: Без кода — Экспорт CSV, загрузка на CSV2GEO, вставка
Идеально для: Всех, кто хочет получить координаты без написания единой строки кода.
Это самый простой подход к геокодированию таблицы. Без API-ключа, без скриптов, без технической настройки.
Шаг 1: Экспортируйте Google Sheets в CSV
Откройте ваш Google Sheets с адресами. Перейдите в Файл > Скачать > Значения, разделённые запятыми (.csv).
Убедитесь, что ваши адресные данные чистые. Вам нужны столбцы вроде улица, город, регион, почтовый индекс и страна — или как минимум один столбец с полным адресом.
Шаг 2: Загрузите на CSV2GEO
Перейдите на CSV2GEO и перетащите ваш CSV-файл в зону загрузки. Платформа автоматически определит ваши столбцы:
- Улица — ваш столбец с адресом
- Город — город или населённый пункт
- Регион — область или край
- Почтовый индекс
- Страна — название страны или код ISO
Нажмите Обработать, и CSV2GEO геокодирует каждую строку с помощью базы из 461M+ адресов в 200+ странах.
Шаг 3: Скачайте результаты
После обработки скачайте геокодированный файл. Он будет содержать все ваши исходные столбцы плюс: широту, долготу, форматированный адрес и оценку точности.
Шаг 4: Вставьте в Google Sheets
Откройте скачанный CSV в Google Sheets (Файл > Импорт) или просто скопируйте столбцы широты и долготы в вашу исходную таблицу.
Вот и всё. Без кода, без API-ключа, без настройки. Бесплатное геокодирование даёт 100 строк в день бесплатно.
Метод 2: Пользовательская функция Apps Script — =GEOCODE(A2)
Идеально для: Пользователей, которым нужен формульный подход прямо в таблице.
Этот метод использует Google Apps Script и API геокодирования CSV2GEO для создания пользовательской функции =GEOCODE().
Шаг 1: Получите API-ключ
Перейдите на CSV2GEO API Keys и сгенерируйте бесплатный ключ. Бесплатный тариф включает 1 000 API-запросов в день.
Шаг 2: Откройте редактор Apps Script
В вашем Google Sheets перейдите в Расширения > Apps Script.
Шаг 3: Добавьте функцию геокодирования
Удалите существующий код и вставьте следующее:
/**
* Геокодирует адрес и возвращает lat, lng
* @param {string} address Адрес для геокодирования
* @param {string} country Код страны ISO (необязательно, напр.: "RU")
* @return {string} "latitude, longitude"
* @customfunction
*/
function GEOCODE(address, country) {
if (!address) return "";
const API_KEY = "ВАШ_API_КЛЮЧ";
const url = "https://api.csv2geo.com/v1/geocode"
+ "?q=" + encodeURIComponent(address)
+ (country ? "&country=" + country : "")
+ "&api_key=" + API_KEY;
const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
const data = JSON.parse(response.getContentText());
if (data.results && data.results.length > 0) {
const loc = data.results[0].location;
return loc.lat + ", " + loc.lng;
}
return "Не найдено";
}Шаг 4: Используйте в таблице
Сохраните скрипт (Ctrl+S), затем вернитесь в таблицу:
=GEOCODE("15 Rue de la Paix, Paris", "FR")Результат: 48.8684, 2.3309
Также можно ссылаться на ячейки:
=GEOCODE(A2, B2)Где столбец A содержит адрес, а B — код страны.
Важное замечание: Пользовательские функции выполняются по одной. Для 500 строк каждая делает отдельный API-запрос. Для больших объёмов используйте Метод 3.
Метод 3: Пакетное геокодирование с меню Apps Script
Идеально для: Обработки сотен или тысяч адресов эффективно.
Этот метод добавляет меню «Геокодирование» в вашу таблицу для геокодирования целого столбца в один клик.
Шаг 1: Добавьте скрипт
Откройте Расширения > Apps Script и вставьте:
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Геокодирование')
.addItem('Геокодировать все адреса', 'geocodeAll')
.addItem('Обратное геокодирование (выделение)', 'reverseGeocodeSelected')
.addToUi();
}
function geocodeAll() {
const API_KEY = "ВАШ_API_КЛЮЧ";
const sheet = SpreadsheetApp.getActiveSheet();
const lastRow = sheet.getLastRow();
for (let row = 2; row <= lastRow; row++) {
if (sheet.getRange(row, 6).getValue()) continue;
const address = sheet.getRange(row, 1).getValue();
const country = sheet.getRange(row, 5).getValue();
if (!address) continue;
const url = "https://api.csv2geo.com/v1/geocode"
+ "?q=" + encodeURIComponent(address)
+ (country ? "&country=" + country : "")
+ "&api_key=" + API_KEY;
try {
const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
const data = JSON.parse(response.getContentText());
if (data.results && data.results.length > 0) {
const r = data.results[0];
sheet.getRange(row, 6).setValue(r.location.lat);
sheet.getRange(row, 7).setValue(r.location.lng);
sheet.getRange(row, 8).setValue(r.accuracy_score);
}
} catch (e) {
sheet.getRange(row, 6).setValue("Ошибка: " + e.message);
}
Utilities.sleep(200);
if (row % 50 === 0) {
SpreadsheetApp.getActiveSpreadsheet().toast(
"Обработано " + row + " из " + lastRow, "Геокодирование", 3);
}
}
SpreadsheetApp.getActiveSpreadsheet().toast("Готово!", "Геокодирование");
}Шаг 2: Организуйте таблицу
| A (Адрес) | B (Город) | C (Регион) | D (Индекс) | E (Страна) | F (Широта) | G (Долгота) | H (Точность) |
|---|---|---|---|---|---|---|---|
| 15 Rue de la Paix | Paris | Île-de-France | 75002 | FR | авто | авто | авто |
Шаг 3: Запустите геокодер
Перезагрузите таблицу. Появится меню «Геокодирование». Нажмите Геокодирование > Геокодировать все адреса.
Скрипт обрабатывает строки с задержкой 200мс. Для 500 адресов потребуется около 2 минут.
Совет: Для более чем 1 000 адресов распределите на несколько дней или экспортируйте в CSV и используйте пакетное геокодирование.
Метод 4: Обратное геокодирование в Google Sheets
Идеально для: Когда у вас уже есть широта и долгота, а нужны адреса.
Это обратный процесс прямого геокодирования. У вас есть GPS-координаты, а нужен соответствующий адрес. Это обратное геокодирование.
Функция обратного геокодирования
function REVERSE_GEOCODE(lat, lng) {
if (!lat || !lng) return "";
const API_KEY = "ВАШ_API_КЛЮЧ";
const url = "https://api.csv2geo.com/v1/reverse"
+ "?lat=" + lat + "&lng=" + lng + "&api_key=" + API_KEY;
const response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
const data = JSON.parse(response.getContentText());
if (data.results && data.results.length > 0) return data.results[0].formatted_address;
return "Не найдено";
}Использование:
=REVERSE_GEOCODE(48.8684, 2.3309)Результат: 15 Rue de la Paix, 75002 Paris, France
Понимание ответа API
Когда вы вызываете API CSV2GEO, вот что возвращается:
{
"results": [{
"formatted_address": "15 Rue de la Paix, 75002 Paris, FR",
"location": { "lat": 48.8684, "lng": 2.3309 },
"accuracy": "rooftop",
"accuracy_score": 0.98,
"components": {
"house_number": "15",
"street": "Rue de la Paix",
"city": "Paris",
"state": "Île-de-France",
"postcode": "75002",
"country": "FR"
}
}]
}Поле accuracy_score — ключевое. 0.95+ = точность до здания. 0.7-0.95 = уровень улицы. Ниже 0.7 = точность только до города или почтового индекса.
Сравнение: Какой метод выбрать?
| Метод | Сложность | Скорость | Идеально для | Бесплатный тариф |
|---|---|---|---|---|
| 1. CSV + CSV2GEO | Нулевая | ⭐⭐⭐⭐⭐ | Разовые задачи | 100 строк/день |
| 2. =GEOCODE() | Базовая | ⭐⭐ | 10-50 строк | 1 000 запр./день |
| 3. Пакетное меню | Базовая | ⭐⭐⭐⭐ | 100-5 000 строк | 1 000 запр./день |
| 4. Обратное геокод. | Базовая | ⭐⭐⭐ | Координаты → Адреса | 1 000 запр./день |
Моя рекомендация: Метод 1 для разовой задачи. Метод 3 для регулярного использования. Для более чем 10 000 строк используйте напрямую пакетное геокодирование.
Советы и лучшие практики
1. Очистите адреса
Мусор на входе — мусор на выходе. Перед геокодированием:
- Удалите лишние пробелы: =СЖПРОБЕЛЫ(A2)
- Стандартизируйте сокращения: «Улица» vs «Ул.», «Проспект» vs «Пр-т»
- Включайте коды стран: RU, UA, KZ, BY для лучших результатов
- Объедините части: =A2 & ", " & B2 & ", " & C2 & " " & D2
2. Всегда указывайте страну
Лучшее улучшение точности — указать страну. «15 Rue de la Paix» существует в нескольких городах мира. Добавление «FR» мгновенно устраняет неоднозначность.
3. Пакетная обработка для больших объёмов
=GEOCODE() подходит для 10-50 строк. Для больших объёмов используйте пакетное меню (Метод 3) или экспортируйте в CSV на CSV2GEO для пакетного геокодирования. Загрузка файла в 10 раз быстрее для больших объёмов.
4. Кэшируйте результаты
Геокодировать один и тот же адрес дважды — расточительство. Проверяйте, существуют ли уже координаты:
if (sheet.getRange(row, 6).getValue()) continue;5. Обрабатывайте ошибки
Некоторые адреса не будут геокодированы — опечатки, неполные данные. Скрипты возвращают «Не найдено» или «Ошибка», чтобы вы могли их выявить.
6. Следите за потреблением API
Бесплатный тариф даёт 1 000 запросов в день. Для 5 000 строк распределите на 5 дней или перейдите на платный тариф.
7. API для автоматизации
Для регулярного геокодирования создайте автоматизированный рабочий процесс с полным API геокодирования. CSV2GEO предлагает 19 эндпоинтов, охватывающих прямое, обратное, пакетное геокодирование, поиск мест и административные границы.
Часто задаваемые вопросы
Геокодирование в Google Sheets бесплатно?
Да. CSV без кода даёт 100 бесплатных строк в день. Методы с API дают 1 000 запросов в день.
Сколько адресов можно геокодировать?
1 000 в день бесплатно. Для 50 000+, экспортируйте в CSV и используйте пакетное геокодирование.
Нужен ли API-ключ?
Только для Методов 2, 3 и 4. Метод 1 не требует ничего — просто загрузите на CSV2GEO.
Поддерживаются международные адреса?
Да. CSV2GEO охватывает 200+ стран с 461M+ адресами. Указывайте код ISO (RU, DE, JP). Смотрите наши руководства для Австралии или Бразилии.
Какая точность?
Для хорошо отформатированных адресов — точность до здания для 90%+ результатов. Поле accuracy_score (от 0 до 1) указывает уровень уверенности. Подробнее в нашем руководстве преобразование адреса в широту/долготу.
Возможно обратное геокодирование?
Да. Метод 4 выше. Также доступно через инструмент обратного геокодирования без кода.
Данные обновляются автоматически?
Нет. Координаты — это статические значения. Если вы изменили адрес, запустите функцию или скрипт заново.
В чём разница Google Sheets и Excel?
Google Sheets использует Apps Script (JavaScript), Excel использует VBA. Та же базовая логика. Google Sheets работает в облаке. Excel лучше для очень больших файлов (1M+ строк). Специальное руководство: геокодирование в Excel.
Начните геокодирование
Загрузите свои адреса в бесплатный инструмент пакетного геокодирования или используйте скрипты выше в Google Sheets. 100 строк бесплатно в день, без регистрации.
I.A. / CSV2GEO Creator
Похожие статьи
Use our batch geocoding tool to convert thousands of addresses to coordinates in minutes. Start with 100 free addresses.
Try Batch Geocoding Free →