Создать карту Google из адресов в Google Sheet - PullRequest
0 голосов
/ 23 февраля 2020

Я хотел бы создать карту Google, которая извлекает адреса из листа Google. Я выяснил, как создать поиск по карте по одному адресу (см. Ниже), но не могу понять, как заставить мою карту отображать несколько адресов.

 function sendMap2() {
 var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
 var address = sheet.getRange('C15:C17').getValue();
 var mapUrl = "https://www.google.com/maps/search/?api=1&query=";
 var mapQuery = encodeURIComponent(address);
 GmailApp.sendEmail('emailaddress@gmail.com', 'Map', 'Map Link: '+mapUrl+mapQuery );
}

1 Ответ

0 голосов
/ 24 февраля 2020

Проблема:

Вы используете getValue , которая будет возвращать только верхнюю левую ячейку в указанном диапазоне (то есть C15) ,

Решение:

Если вы хотите получить все адреса в диапазоне, вы должны вместо этого использовать getValues ​​. Это вернет двумерный массив значений, который я бы посоветовал вам преобразовать в простой массив адресов. Затем вы можете перебирать каждый адрес в этом массиве, добавляя каждый массив к телу сообщения электронной почты с помощью concat () .

Это может быть что-то вроде следующего:

function sendMap2() {
  var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
  var values = sheet.getRange('C15:C17').getValues();
  var addresses = [];  
  for (var i = 0; i < values.length; i++) {
    addresses = addresses.concat(values[i]);
  }
  var body = "";
  for (var j = 0; j < addresses.length; j++) {
    var mapUrl = "https://www.google.com/maps/search/?api=1&query=";
    var mapQuery = encodeURIComponent(addresses[j]);
    body = body.concat('Map Link: ' + mapUrl + mapQuery + '\n');
  }
  GmailApp.sendEmail('your-email', 'Map', body);
}

ОБНОВЛЕНИЕ:

Если вы хотите указать несколько адресов в одном URL, вы можете использовать это вместо:

  var mapUrl = "https://www.google.com/maps/dir/";
  var body = 'Map Link: ' + mapUrl;
  for (var j = 0; j < addresses.length; j++) {
    var mapQuery = encodeURIComponent(addresses[j]);
    body = body.concat(mapQuery + '/');
  }
  GmailApp.sendEmail('your-email', 'Map', body);
}

Ссылка:

...