Я новичок в JavaScript, и, хотя я просмотрел множество форумов / руководств, я борюсь с тем, что мне нужно изменить, чтобы достичь того, что я хочу.
В настоящее время у меня есть электронная таблица Google который заполнен почтовыми индексами Великобритании, эти почтовые индексы автоматически добавляются в различных точках с использованием комбинации форм Google и Microsoft forms / flow.
Я хочу автоматически рассчитать расстояние в милях между 2 почтовыми индексами, которые находятся в каждой строке .
Например, в столбце C будет указан почтовый индекс самовывоза, а в столбце D будет почтовый индекс возврата - в столбце Я хотел бы, чтобы пробег автоматически отображался при добавлении новой строки с новыми почтовыми кодами.
В настоящее время я использую указанную ниже функцию клиента для расчета расстояния в милях, но мне нужно иметь возможность обернуть ее в функции ARRAYFORMULA
в таблицах Google, но когда я делаю это, только первая ячейка отображает правильный пробег (остальные остаются пустыми)
* 1 013 * Кажется, что приведенный ниже код работает очень хорошо. Я просто не могу понять, как разрешить функции
GOOGLEDISTANCE
принимать массив почтовых индексов Pick up и массив почтовых индексов возврата, а затем возвращать массив рассчитанного пробега в милях.
Код:
function GOOGLEDISTANCE(pick_up,drop_off,return_type) {
Utilities.sleep(1000);
var travelMode = Maps.DirectionFinder.Mode.BICYCLING;
var directions = Maps.newDirectionFinder()
.setRegion('UK')
.setLanguage('en-GB')
.setOrigin(pick_up)
.setDestination(drop_off)
// .addWaypoint(waypoint1)
.setMode(travelMode)
.getDirections();
if (directions.status !== "OK")
return "Error: " + directions.status;
var route = directions.routes[0].legs[0];
var time = route.duration.value;
var distance = route.distance.value;
var steps = route.steps.map(function(step) {
return step.html_instructions.replace(/<[^>]+>/g, "");
}).join("\n");
switch(return_type) {
case "MILES":
case "miles":
return distance * 0.000621371;
break;
case "KILOMETERS":
case "kilometers":
return distance / 1000;
break;
case "MINUTES":
case "minutes":
return time / 60;
break;
case "HOURS":
case "hours":
return time / 60 / 60;
break;
case "STEPS":
case "steps":
return steps;
break;
default:
// Default to miles
return distance * 0.000621371;
}
}