У меня есть следующий код для преобразования серии почтовых кодов в длинные лат путем выбора ячеек, в этом примере A2: C3
Это работает хорошо, но я хочу, чтобы это было, это получить диапазондобавьте в массив запись long и lat, а затем сбросьте массив обратно на лист, предполагая, что это будет быстрее.
Я пробовал cells.split
, но все еще мог печатать только одну строку назад
Пример данных, почтовые индексы Великобритании с пустыми ячейками для длинных и лат
| A | B | C |
1 | Postcode | Long | Lat |
2 | SW1 1AA | | |
3 | EC1V 9BP | | |
Текущий скрипт приложения
function getGeocodingRegion() {
return PropertiesService.getDocumentProperties().getProperty('GEOCODING_REGION') || 'uk';
}
function addressToPosition() {
var sheet = SpreadsheetApp.getActiveSheet();
var cells = sheet.getActiveRange();
var addressColumn = 1;
var addressRow;
var latColumn = addressColumn + 1;
var lngColumn = addressColumn + 2;
var geocoder = Maps.newGeocoder().setRegion(getGeocodingRegion());
var location;
for (addressRow = 1; addressRow <= cells.getNumRows(); ++addressRow) {
var address = cells.getCell(addressRow, addressColumn).getValue();
// Geocode the address and plug the lat, lng pair into the
// 2nd and 3rd elements of the current range row.
location = geocoder.geocode(address);
// Only change cells if geocoder seems to have gotten a
// valid response.
if (location.status == 'OK') {
lat = location["results"][0]["geometry"]["location"]["lat"];
lng = location["results"][0]["geometry"]["location"]["lng"];
cells.getCell(addressRow, latColumn).setValue(lat);
cells.getCell(addressRow, lngColumn).setValue(lng);
}
}
};