使用Google脚本从地址数据中获取地理位置数据



我正试图从谷歌表单中的位置获取纬度和经度

位置列=N

纬度列=O

经度栏=p

函数抛出错误,此部分

var geocoder = Maps.newGeocoder().geocode(address);

如果位置列中的单元格的值不是可以给定坐标ex的形式;空单元格或"空单元格";智利";

发生这种情况时,我需要给lat & lng一个空值,即

lat=lng=">

我正在尝试使用

try{}
catch(e){}

错误处理功能运行,但没有输出

感谢

原始功能

function geoCode() {
var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];
for (var i = 1; i < cells.length; i++) {
var address = cells[i][13];
var geocoder = Maps.newGeocoder().geocode(address);
var res = geocoder.results[0];

var lat = lng = 0;
if (res) {
lat = res.geometry.location.lat;
lng = res.geometry.location.lng;
}

latitudes.push([lat]);
longitudes.push([lng]);
}

sheet.getRange('O2')
.offset(0, 0, latitudes.length).setValues(latitudes);
sheet.getRange('P2').offset(0, 0, longitudes.length).setValues(longitudes);
}

带有错误处理

function geoCode2() {
var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];
for (var i = 1; i < cells.length; i++) {
var address = cells[i][13];

try {
var geocoder = Maps.newGeocoder().geocode(address);
var res = geocoder.results[0];

var lat = lng = 0;
if (res) {
lat = res.geometry.location.lat;
lng = res.geometry.location.lng;
}

latitudes.push([lat]);
longitudes.push([lng]);
}

catch(e) {
var lat = lng = "";
latitudes.push([lat]);
longitudes.push([lng]);
continue;//If error continue looping
}
}
sheet.getRange('O2')
.offset(0, 0, latitudes.length).setValues(latitudes);
sheet.getRange('P2').offset(0, 0, longitudes.length).setValues(longitudes);
}

我想明白了。我想它只会在空单元格值上出错

function geoCode() {
var sheet = SpreadsheetApp.getActiveSheet();

var range = sheet.getDataRange();
var cells = range.getValues();

var latitudes = [];
var longitudes = [];
for (var i = 1; i < cells.length; i++) {
var address = cells[i][1];

if(address =="") {
lat = ""
lng = ""
latitudes.push([lat]);
longitudes.push([lng]);
} else{

var geocoder = Maps.newGeocoder().geocode(address);
var res = geocoder.results[0];

var lat = lng = 0;
if (res) {
lat = res.geometry.location.lat;
lng = res.geometry.location.lng;
}

latitudes.push([lat]);
longitudes.push([lng]);
}
}

sheet.getRange('C2')
.offset(0, 0, latitudes.length).setValues(latitudes);
sheet.getRange('D2').offset(0, 0, longitudes.length).setValues(longitudes);
}

最新更新