Как получить адрес на основе имени и города места в Google Таблицах?

Я хотел бы знать, как получить адрес на основе имени и города места в Google Sheets? Я прочитал ответ на этот вопрос и следовал инструкциям, но код из ответа в этом сообщении вызвал у меня следующую ошибку:

TypeError: Невозможно прочитать свойство "formatted_address" из неопределенного. (строка 8, файл "Код")

Переход к связанному вопросу выше покажет вам код в ответе, но вот короткая версия:

После получения ключа для Google Places API введите определяемую пользователем формулу в любую ячейку Google Таблиц следующим образом:

=mapAddress(B1, B2, B3)

В текстовом редакторе скопируйте и вставьте:

function mapAddress(place, city, state) {
  var API_KEY = 'yourapikeyhere';
  var url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=' +
    place + ' ' + city + ' ' + state + '&key=' + API_KEY;
  var response = UrlFetchApp.fetch(url);
  var json = response.getContentText();
  obj = JSON.parse(json);
  addr = obj.results[0].formatted_address;
  return addr;
}

У меня недостаточно высокий балл, чтобы публиковать комментарии по этому вопросу, поэтому я должен задать новый вопрос. Есть ли шаблон Google Sheets или надстройка, которая достигает этого?


comment
Пожалуйста, поделитесь своими кодами.   -  person Teyam    schedule 25.08.2016
comment
Я отредактировал свой пост, чтобы предоставить код. Переход к указанному сообщению предоставит дополнительную информацию.   -  person graymoment    schedule 25.08.2016


Ответы (1)


Вам необходимо включить Веб-службу Google Places API в проекте Google Apps Script в Консоль разработчика, выполните следующие действия:

  1. В Редакторе скриптов выберите меню Ресурсы > Проект Developers Console.
  2. Нажмите на ссылку с примерно таким названием: ИмяВашегоПроекта - project-id-sveeczngccmxxerwwzx
  3. В меню слева нажмите Библиотека и в разделе API Карт Google найдите вариант Веб-служба Google Places API.
  4. В верхней части страницы нажмите ВКЛЮЧИТЬ и снова запустите скрипт.
person ocordova    schedule 29.08.2016
comment
Да, я следовал инструкциям по включению веб-службы Google Places API, но у меня возникли проблемы с ее работой. В конце концов я заставил его работать после удаления всего столбца и начала с нового столбца. Возможно, было что-то странное в форматировании одной из ячеек. - person graymoment; 01.09.2016
comment
Может быть, что-то не так со значением места, города или штата (может быть, какие-то лишние пробелы?). Ваш код был в порядке, единственная причина, по которой я думал, что эта ошибка возникает, заключалась в том, что API не был включен, например, если вы регистрируете response без включения API с помощью Logger.log(response), вы получаете отказ в запросе (image) и неизбежный выброс ошибка, которую вы упомянули, потому что response становится undefined и вы не можете получить доступ к свойству formatted_address. Но я рад, что теперь это работает (: - person ocordova; 01.09.2016
comment
Помните, что вы всегда можете протестировать свою функцию, запустив ее непосредственно из редактора сценариев, просто определив параметры внутри функции следующим образом (изображение) - person ocordova; 01.09.2016