I have a power query that makes a call to Google Maps API and which returns Json like this
let
baseurl = "https://maps.googleapis.com/maps/api/geocode/json?",
cellAddress = Excel.CurrentWorkbook(){[Name="Address"]}[Content]{0}[Column1],
stepOneAdress = Replacer.ReplaceText(cellAddress, "Addrs: ", ""),
noSpaceAdress = Replacer.ReplaceText(stepOneAdress, " ", "%20"),
noCommasAdress = Replacer.ReplaceText(noSpaceAdress, ",", "%2C"),
fullUrl = baseurl&"address="&noCommasAdress&"&key=AIzaSyCwcLo1bl8iTSWhU3vgHNuq3rJHbSGH-Pw",
webdata = Web.Contents(fullUrl),
response = Json.Document(webdata),
results = response[results],
data = results{0}
in
data
The data looks like this
{
"results" : [
{
"address_components" : [
{
"long_name" : "Steamboat Springs",
"short_name" : "Steamboat Springs",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Routt County",
"short_name" : "Routt County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Colorado",
"short_name" : "CO",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "80487",
"short_name" : "80487",
"types" : [ "postal_code" ]
}
],
"formatted_address" : "Steamboat Springs, CO 80487, USA",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 40.5286781,
"lng" : -106.7801651
},
"southwest" : {
"lat" : 40.439399,
"lng" : -106.886848
}
},
"location" : {
"lat" : 40.4849769,
"lng" : -106.8317158
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 40.5286781,
"lng" : -106.7801651
},
"southwest" : {
"lat" : 40.439399,
"lng" : -106.886848
}
}
},
"place_id" : "ChIJYUZWCYF7QocRfc9uSNGjqBs",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
I then can read the "data" from that power query in another power query, where I am trying to get the zip code data.
let
data = Coordinates,
address_components = data[address_components],
address_components1 = address_components{6}
in
address_components1
address_component1 (I know terrible name, but still prototyping) is a Json record that is then used by yet another query.
But the value from the Json list is hard coded as you can see to be the sixth item in the list. But I'm finding that the postal code that I want is not always in the sixth position in the list.
The records have a types list in them that I want to read and determine if the type equals "postal_code"
I can't figure out though how to loop through the list and check each item.
I'd like it to be some thing like
address_component1,
foreach(item in address_components){
type_list = item["types"],
if type_list = "postal_code"
address_component1 = item,
Is this possible to loop in this way?