Я использую 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>
Как мне заставить "расстояние" снова работать ??
Это работает для меня:
=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
units=imperial
/1609.344