В Google Sheets не удалось проанализировать «расстояние» от Google Distance Matrix API - PullRequest
0 голосов
/ 13 марта 2020

Я использую Google Sheets в качестве трекера пробега, чтобы вычислить расстояние от моего дома до различных адресов. Эта формула работала для меня в течение нескольких месяцев, но недавно прекратила:

=ROUND((importxml("https://maps.googleapis.com/maps/api/distancematrix/xml?&origins="&"My+Home+Address"&"&destinations="&A1&"&sensor=false&units=imperial&alternatives=false&key=MY_API_KEY","/DistanceMatrixResponse/row/element/distance/value")/1609.344)*2,1)

Я использую свой собственный действующий ключ API и проверил, что запрос работает за пределами Google Sheets. Самое смешное, что если я изменю «/ distance / value» на «/ duration / value», Sheets вернет ответ очень хорошо.

Вот как выглядит возвращенный XML для матрицы расстояний:

<DistanceMatrixResponse>
<status>OK</status>
<origin_address>Home Address, USA</origin_address>
<destination_address>Destination Address, USA</destination_address>
<row>
<element>
<status>OK</status>
<duration>
<value>1983</value>
<text>33 mins</text>
</duration>
<distance>
<value>29971</value>
<text>18.6 mi</text>
</distance>
</element>
</row>
</DistanceMatrixResponse>

Как мне заставить "расстояние" снова работать ??

1 Ответ

0 голосов
/ 13 марта 2020

Это работает для меня:

=IMPORTXML("https://maps.googleapis.com/maps/api/distancematrix/xml?&origins="&B1&"&destinations="&B2&"&sensor=false&alternatives=false&key="&B3,"/DistanceMatrixResponse/row/element/distance/text")

Кстати, если вы избавитесь от units=imperial, по умолчанию используется значение c, и вам не нужно будет /1609.344

enter image description here

...