Как преобразовать URL в его название массово с помощью App Script?

Вопрос или проблема

Мне нужно экспортировать объемные данные по недвижимости. Есть возможность заменить URL на его название, но это нужно делать по одному в Google Sheets. Я надеялся узнать, есть ли способ сделать это быстрее с помощью Apps Script.

Я пробовал IMPORTXML, но у него есть ограничения.

Я попробовал следующий код, но он только получает имя хост-вебсайта.

function TitleFromURL(input) {
  var regex = /^(?:https?:\/\/)?(?:w{3}\.)?([^\.]+)/;
  var match = input.match(regex);
  return match ? match[1] : '';
}

Пример данных:

Столбец A Столбец B
https://www.realtor.ca/real-estate/27633475/720b-waverley-road-dartmouth-dartmouth На продажу: 720B Waverley Road, Dartmouth, Новая Шотландия B2X2G4 – 202426370

Преобразование URL в его название с помощью функции SPLIT

Предоставленный вами вебсайт защищен, что предотвращает доступ веб-скрапов к его содержимому. Это связано с различными мерами безопасности, такими как CAPTCHA и блокировка IP, которые предназначены для предотвращения несанкционированного извлечения данных.

Одним из возможных решений является извлечение адреса непосредственно из ссылки. Извлеченный адрес затем можно отформатировать как 720b Waverley Road Dartmouth Dartmouth.

Пример данных таблицы:

Пример данных

Пример кода:

  function titleFromURL(url) {
  const urlModif = url.split("https://stackoverflow.com/").pop().replaceAll("-", " ").replace(/\b(\w)/g, f => f.toUpperCase());
  console.log(urlModif);
  return urlModif;
}

После сохранения кода обратно в вашу таблицу введите это в столбце B:

=titleFromURL(A1)

URL

Пример вывода:

пример вывода

Ссылка:
Функция SPLIT

.

Ответ или решение

Чтобы преобразовать URL в заголовок в больших объемах данных с помощью Google Apps Script, следуя вашим требованиям, можно использовать скрипт, который запрашивает содержимое веб-страницы и извлекает заголовки. Мы рассмотрим создание функции, которая будет работать с массивом URL и возвращать заголовки для каждого из них.

Шаг 1: Подготовка Google Sheets

  1. Откройте Google Sheets и создайте новую таблицу.
  2. Вставьте ваши URL в колонку A, начиная с A1.

Шаг 2: Добавление скрипта

  1. Нажмите на Расширения -> Apps Script.
  2. Удалите любой код в редакторе и вставьте следующий:
function getTitlesFromURLs() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var urls = sheet.getRange("A1:A" + sheet.getLastRow()).getValues(); // Получаем все URL из колонки A
  var titles = [];

  urls.forEach(function(urlRow) {
    var url = urlRow[0];
    if (url) {
      titles.push([fetchTitle(url)]);
    } else {
      titles.push([""]); // Пустое значение для пустых URL
    }
  });

  // Записываем заголовки в колонку B
  sheet.getRange(1, 2, titles.length).setValues(titles);
}

function fetchTitle(url) {
  try {
    var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
    var html = response.getContentText();
    var titleMatch = html.match(/<title>(.*?)<\/title>/);
    return titleMatch && titleMatch[1] ? titleMatch[1] : 'Нет заголовка';
  } catch (e) {
    return 'Ошибка доступа';
  }
}

Шаг 3: Запуск скрипта

  1. Сохраните проект, задав ему имя.
  2. Вернитесь в Google Sheets.
  3. Запустите функцию getTitlesFromURLs из редактора Apps Script (или добавьте кнопку на лист для упрощения выполнения скрипта).

Объяснение кода

  • getTitlesFromURLs: основная функция, которая считывает URL из колонки A и создает массив заголовков для каждой страницы.
  • fetchTitle: вспомогательная функция, которая отправляет GET-запрос на указанный URL и использует регулярное выражение для извлечения содержимого тега <title>.
  • Если URL недоступен или возникает ошибка, функция обработает это и вернет сообщение об ошибке или "нет заголовка".

Заметки

  1. Убедитесь, что у вас есть разрешения на доступ к интернету в вашем скрипте. Google Apps Script требует разрешения для работы с внешними ресурсами.
  2. Обратите внимание, что некоторые сайты могут блокировать запросы от скриптов, и вы получите ошибку доступа.
  3. Этот скрипт может занять некоторое время на выполнение, особенно если у вас большое количество URL, поскольку он делает запросы по интернету.

Заключение

Использование Google Apps Script для автоматизации извлечения заголовков из URL значительно сократит ваше время на ручное выполнение этой задачи в Google Sheets. Профильный подход к коду и обработка исключений делают ваш скрипт более надежным и устойчивым к ошибкам.

Оцените материал
Добавить комментарий

Капча загружается...