Не сокращайте ссылку goo.gl/maps на координаты - PullRequest
0 голосов
/ 23 января 2019

Мне интересно, есть ли простой способ конвертировать сокращенную ссылку на карты Google в ее эквивалентные координаты внутри листов Google . Например, точка рядом с Эйфелевой башней:

Координаты: 48.857469, 2.295821

Длинный URL: https://www.google.com/maps/search/?api=1&query=48.857469,2.295821

Короткий URL: https://goo.gl/maps/fxgX5rM1snM2

Моя проблема:

У меня есть таблица местоположений, которая была предоставлена ​​мне с помощью кнопки «Поделиться» внутри карт Google, которая автоматически сокращает URL. Мне интересно, есть ли способ отменить сокращение URL, чтобы я мог извлечь координаты для дальнейшего использования.

Моя попытка:

Этот вопрос был задан, и приведенное ниже решение показывает, как это можно сделать с помощью Python. Я хотел бы сделать это с помощью Google Apps Script и, возможно, любых существующих API, которые могут работать с URL-адресами. Я не знаком с кодом .gs и любыми хитростями при их использовании.

ОБНОВЛЕНИЕ: я следовал этому руководству по установке , и мой скрипт связан с моим проектом Google API.

Мои вопросы:

Это кажется простым делом. Это? Если это просто и кто-то может быстро написать код, это было бы очень полезно. Я вернусь и пойму код сам.

1 Ответ

0 голосов
/ 23 января 2019

Вы можете сделать это в JavaScript.

В Google Scripts вы можете реализовать метод, использованный в другом вопросе, на который вы ссылались. Google Scripts предоставляет URLFetchApp . В контексте JS Vanilla вы должны использовать API выборки или XMLHttpRequest.

Поскольку вы выполняете перенаправление, вы можете предоставить объект параметров для PREVENT после перенаправления.

var response = URLFetchApp(url, {followRedirects: false});

Затем вы можете найти URL перенаправления в заголовке местоположения ответа. Заголовок закодирован, поэтому вы можете использовать decodeURIComponent для работы с URL.

var longUrl = decodeURIComponent(response.getHeaders()['Location']);

Оттуда вы можете использовать RegExp из второго вопроса, на который вы ссылались, чтобы получить соответствующую часть:

var matches = longUrl.match(/@([0-9]?[0-9]\.[0-9]*),([0-9]?[0-9]\.[0-9]*)/);

Вы захотите проверить код состояния ответа и обработать все ошибки в случае, если URL-адрес не работает или не является перенаправлением.

...