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

标签 google-apps-script error-handling geolocation

我正在尝试从Google工作表中的位置获取经度和纬度
位置栏= N
纬度栏= O
经度列= P
函数抛出错误,这部分var geocoder = Maps.newGeocoder().geocode(address);如果location列中单元格的值不是可给定坐标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);
}

关于google-apps-script - 使用Google脚本从地址数据中获取地理位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64138291/

相关文章:

postgresql - 使用Google电子表格中的Google Apps脚本连接到Postgresql数据库

error-handling - 我可以简化这个处理 Option<T> 和 Result<T> 的 Rust 代码吗?

php symfony 异常处理/错误处理

c# - IPV6到国家

ajax - 存储中的数据更改后,Sencha Touch 刷新列表

javascript - Google Apps 脚本返回正确的值 + 多个不需要的逗号

google-apps-script - 实用程序 base64Encode 与 base64Decode 方法

spring - Spring Cloud Stream中的错误处理-Kafka Binder

javascript - 你能用 React Native 跟踪背景地理定位吗?

javascript - JS 数组 - 检查对象值是否重复