Edit… I’ve got the following script working, however it only works when postcode has all capital letters - lowercase postcodes return with the postcode value tested.
function Read(postcode)
{
var YOUR_API_KEY = ‘MYAPIKEYHERE’;
var country = ‘GB’;
var urlfmt = 'https://maps.googleapis.com/maps/api/geocode/json?key='+ YOUR_API_KEY + ‘&components=postal_code:’+postcode;
if(country != undefined)
urlfmt += ‘|country:’+country;
var content = web.Download(urlfmt);
var obj = JSON.parse(content);
var lat = obj.results[0].geometry.location.lat;
var lng = obj.results[0].geometry.location.lng;
var addrurl = ‘https://maps.googleapis.com/maps/api/geocode/json?key=’ + YOUR_API_KEY + ‘&latlng=’ + lat + ‘,’ + lng + ‘&sensor=false’;
var addr = web.Download(addrurl);
var addrObject = JSON.parse(addr);
var data = GetAddressComponents(addrObject.results,postcode);
if(data == null) return postcode;
var street = ReadComponent(‘route’,data);
if(street == ‘-’)
street = ReadComponent(‘locality’,data);
if(street == ‘-’)
street = ReadComponent(‘administrative_area_level_4’,data);
var town = ReadComponent(‘postal_town’,data);
var county = ReadComponent(‘administrative_area_level_2’,data);
var distance = gdistance(postcode);
return postcode + ‘,’ + street + ‘,’ + town + ‘,’ + county + ‘,’ + distance;
}
function GetAddressComponents(results,postcode)
{
for(i=0;i < results.length;i++)
{
for(j=0; j< results[i].address_components.length;j++)
{
var component = results[i].address_components[j];
if(component.long_name.replace(’ ‘,’‘) == postcode.replace(’ ‘,’'))
return results[i].address_components;
}
}
return null;
}
function ReadComponent(name,components)
{
for(i=0;i<components.length;i++)
{
var component = components[i];
for(j=0;j<component.types.length;j++)
{
if(component.types[j] == name)
return component.long_name;
}
}
return ‘-’;
}
function gdistance(postcode)
{
var YOUR_API_KEY = ‘MYAPIKEYHERE’;
var u = ‘https://maps.googleapis.com/maps/api/distancematrix/json?key=’ + YOUR_API_KEY + ‘&origins=NP201FU.&destinations=’+postcode+‘.&mode=driving&language=en-GB&sensor=false&units=metric’;
var alldata = web.Download(u);
var json = JSON.parse(alldata);
// distance.text gives data like 826 km
// var distance = json.rows[0].elements[0].distance.text;
// distance.value gives data like 826467 (which is meters, so divide by 1000 to get Km)
var distance = json.rows[0].elements[0].distance.value/1000;
return distance;
}