Обратный сокращенный URL-адрес для получения исходного URL-адреса перед сокращением в Google Sheets - PullRequest
4 голосов
/ 10 октября 2019

У меня есть лист, где я собираю твиты со ссылками на основе поискового запроса. Twitter, однако, передает мне для каждого твита свой короткий URL-адрес (t.co), а не исходный URL-адрес, к которому был предоставлен общий доступ.

Есть ли способ использовать формулы или код Google для отслеживания короткого URL-адреса иполучить окончательный целевой URL? Оригинал, который поделился автором твита?

     What i have        |       what i'm looking for
---------------------------------------------------------------------------
https://t​.co/dura1sUSxm | https://www.jpost.com/Breaking-News/Russia-Saudi-Arabia-plan-deals-for-2-bln-for-Putins-visit-to-Riyadh-604200
https://t​.co/Ayy7ww8dFX | https://www.washingtonpost.com/national-security/trump-says-little-as-his-gop-allies-condemn-turkeys-incursion-into-syria/2019/10/09/c46210f6-eaab-11e9-9306-47cb0324fd44_story.html
https://t​.co/WLj6PipXkC | https://www.newsweek.com/teacher-fired-refusing-sign-pro-document-1262083
https://t​.co/UoqiqfaHup | https://www.reuters.com/article/us-environment-waste-idUSKBN1WP1RE
https://t​.co/hO9swbmeeZ | https://www.washingtonpost.com/national-security/trump-says-little-as-his-gop-allies-condemn-turkeys-incursion-into-syria/2019/10/09/c46210f6-eaab-11e9-9306-47cb0324fd44_story.html
https://t​.co/Ve8ZpCp1s1 | https://www.reuters.com/article/us-environment-waste-idUSKBN1WP1RE

1 Ответ

3 голосов
/ 10 октября 2019

Ответ:

Да, это возможно с помощью метода fetch, равного UrlFetchApp, получения заголовков и чтения свойства Location.

Метод:

Вы можете использовать UrlFetchApp, чтобы получить заголовки пункта назначения, которые содержат конечную конечную точку URL. Однако важно поместить это в цикл, поскольку иногда несколько служб сокращения URL-адресов объединяются в цепочку, и поэтому вы не можете получить целевой URL-адрес после всего одного цикла.

Код:

function getLocation(url) {
  var fetched = UrlFetchApp.fetch(url, {followRedirects:false});

  if (fetched.getHeaders().Location !== undefined) {
    return getFullUrl(fetched.getHeaders().Location);
  }
  return url;
}

...