Фильтрация данных JSON с тем же именем

Я использую JSON в Google Sheets для поиска Zip и нахождения округа. Я только хочу вернуть графство. Я могу заставить его возвращать каждое значение, поэтому функция ImportJSON работает.

Вот моя формула. Я пробовал все перестановки ссылки, но я просто не знаю, как ее отформатировать.

=ImportJSON(CONCATENATE("https://maps.googleapis.com/maps/api/geocode/json?address="92660), "results/address_components/long_name[3]", "noHeaders")

Вот данные JSON из Google Maps Geocoding API. Мне нужно только длинное название округа. В данном примере это «Округ Ориндж».

{
       "results" : [
          {
             "address_components" : [
                {
                   "long_name" : "92660",
                   "short_name" : "92660",
                   "types" : [ "postal_code" ]
                },
                {
                   "long_name" : "Newport Beach",
                   "short_name" : "Newport Beach",
                   "types" : [ "locality", "political" ]
                },
                {
                   "long_name" : "Orange County",
                   "short_name" : "Orange County",
                   "types" : [ "administrative_area_level_2", "political" ]
                },
                {
                   "long_name" : "California",
                   "short_name" : "CA",
                   "types" : [ "administrative_area_level_1", "political" ]
                },
                {
                   "long_name" : "United States",
                   "short_name" : "US",
                   "types" : [ "country", "political" ]
                }
             ],
             "formatted_address" : "Newport Beach, CA 92660, USA",
             "geometry" : {
                "bounds" : {
                   "northeast" : {
                      "lat" : 33.671823,
                      "lng" : -117.841337
                   },
                   "southwest" : {
                      "lat" : 33.6040739,
                      "lng" : -117.909447
                   }
                },
                "location" : {
                   "lat" : 33.6301328,
                   "lng" : -117.8721676
                },
                "location_type" : "APPROXIMATE",
                "viewport" : {
                   "northeast" : {
                      "lat" : 33.671823,
                      "lng" : -117.841337
                   },
                   "southwest" : {
                      "lat" : 33.6040739,
                      "lng" : -117.909447
                   }
                }
             },
             "place_id" : "ChIJRdSajSne3IAR8T4A2x-wgrE",
             "types" : [ "postal_code" ]
          }
       ],
       "status" : "OK"
    }

person Thomas    schedule 06.05.2016    source источник


Ответы (2)


Есть 3 вещи, которые мешают правильному импорту:

  1. в частности, в функции объединения у вас есть address="92660

что должно быть address=",92660

или вы можете полностью исключить функцию concat и отформатировать URL-адрес следующим образом:

"https://maps.googleapis.com/maps/api/geocode/json?address="&"92660"

или технически указать на ячейку, такую ​​​​как A1, со значением 92660, например. "https://maps.googleapis.com/maps/api/geocode/json?address="&A1

  1. ты пропустил начало / перед results

  2. Чтобы получить 3-й элемент, вместо использования [3] оберните свою формулу функцией индекса и укажите индекс 3.

полная вещь:

=index(importjson("https://maps.googleapis.com/maps/api/geocode/json?address="&A1,"/results/address_components/long_name","noHeaders"),3)

введите здесь описание изображения

person Aurielle Perlmann    schedule 07.05.2016
comment
Спасибо. Это работает отлично. Оказывается, адреса Google не все в том же порядке, но это еще одна проблема. - person Thomas; 08.05.2016

Вы не даете много деталей, но как насчет того, чтобы просто проанализировать json, а затем выполнить результаты["address_components"][2]["long_name"]?

person Silvertail    schedule 06.05.2016
comment
Когда я это делаю, я получаю ошибку синтаксического анализа формулы. =ImportJSON(CONCATENATE("https://maps.googleapis.com/maps/api/geocode/json?address=",C2), "results["address_components"][2]["long_name"]", "noHeaders") Если я уберу кавычки, я получу ошибку "Ссылка не найдена" =ImportJSON(CONCATENATE("https://maps.googleapis.com/maps/api/geocode/json?address=",C2), "results[address_components][2][long_name]", "noHeaders") - person Thomas; 06.05.2016