Почему мой верификатор адресов на основе геокодирования не выводит данные в Google Sheets? - PullRequest
0 голосов
/ 31 мая 2019

Итак, я мега-новичок (знаком с js из SoloLearn, некоторыми знаниями по скриптам приложений Google от Udemy), пытаюсь приложить руку к настройке «верификатора адреса» для набора данных, который использует моя организация.Мы получаем адресную информацию от людей, которые заполняют наши формы онлайн, а также стажеры вводят ту же информацию из бумажных форм, которые отправляются.Это приводит к путанице разных форматов адресов, которые вводятся в наш центральный столбец таблицы Google.

Я в основном пытаюсь использовать службу геокодера для получения необработанных данных из этого столбца адресов (тот, что в "SpreadsheetApp."getActive "), запустите его через Google, чтобы сопоставить его с фактическими координатами, затем выведите правильный адрес в стандартном формате.Я смоделировал этот код из потока Stack Exchange, который я хотел бы оставить открытым для ссылки здесь.

Я отладил это, и он, кажется, "работает" просто отлично (без сообщений об ошибках), но это нев конечном итоге выложить новые адреса.Я попытался поместить туда журнал, чтобы увидеть, действительно ли геокодер вытягивает что-либо в объект результатов, но и с этим тоже не получилось.Пожалуйста, помогите мне, я тону.

<!-- language: lang-js -->
function menuItem1() {
function addrVerify() {
var sheet = SpreadsheetApp.getActive()
var addrRange = sheet.getActiveRange()
var geocoder = new google.maps.Geocoder();
  geocoder.geocode({
    'Addresses': addrRange.value});
function(results, status) {
    if (status === google.maps.GeocoderStatus.OK && results.length > 0)
    {addrRange.value = results[0].formatted_address;;} 
  else alert("Invalid address");
  };
 }
}

Мне удалось поместить кнопку для запуска функции в пользовательском интерфейсе моего листа, так что есть начало.Кроме того, теперь я знаю, как сделать кодовый забор!

1 Ответ

0 голосов
/ 01 июня 2019

Используя пример в приведенном выше комментарии, я поместил адреса в первый столбец, начиная со второй строки, и использовал «Адрес» для заголовка column1 и «Lat» для заголовка column2 и «Lng» для заголовка column3.

Этот код правильно заполняется в латах и ​​lng для каждого адреса в столбцах 2 и 3.

function addrVerify() {
  var ss = SpreadsheetApp.getActive()
  var dsh = ss.getActiveSheet();
  var rg = dsh.getRange(2,1,dsh.getLastRow()-1,3);
  var addrA= rg.getValues();

  for(var i=0;i<addrA.length;i++) {
    var resp=Maps.newGeocoder().geocode(addrA[i][0]);
    for(var j=0;j<resp.results.length;j++) {
      var result=resp.results[j];
      addrA[i][1]=result.geometry.location.lat;
      addrA[i][2]=result.geometry.location.lng;
      Logger.log('%s: %s, %s', result.formatted_address, result.geometry.location.lat,result.geometry.location.lng);
    }
  }
  rg.setValues(addrA);
}

Моя таблица выглядела так :( только с реальными адресами)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...