Обработка ошибок для поиска домена FetchURL () Google Scripts App - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть этот скрипт, который хорошо работает, когда возвращаемый поиск имеет префикс домена «www.». Как я могу встроить в обработку ошибок, когда "www." не там. Также бонусный вопрос: мой скрипт возвращает первый результат поиска. Иногда это wikipedia или linkedin, но я хочу, чтобы возвращалось только доменное имя компании.

Текущий сценарий:



function fetchURL(input) {

  var input = "Southwest Airlines";
  var url = "https://duckduckgo.com/?q=what+is+the+website+for+"+encodeURIComponent(input);

  var options = {
    'muteHttpExceptions' : true
  };

  var searchResults = UrlFetchApp.fetch(url, options);
  var titleExp = /<h2 class=\"result__title"\>([\s\S]*?)<\/h2>/gi;
  var titleResults = searchResults.getContentText("UTF-8").match(titleExp);

  // return the first match 
  var results = decodeURIComponent(titleResults[0]);
  console.log(results);

  let domain = results.split("www.")[1].split("/")[0];
  console.log(domain);

  return domain;

}

Для «Southwest Airlines» этот сценарий вернет southwest.com. Однако для «Города Хьюстона» это приводит к ошибкам, поскольку первым результатом поиска является страница википедии И это en.wikipedia.org без "www".

1 Ответ

1 голос
/ 22 апреля 2020
  • Вы хотите достичь следующих ситуаций, используя Google Apps Script.
    • Когда Southwest Airlines установлен в переменную input, вы хотите вернуть значение southwest.com.
    • Когда City of Houston указан в переменной input , вы хотите вернуть значение en.wikipedia.org.

Точки модификации:

  • В этом ответе я изменил let domain = results.split("www.")[1].split("/")[0].
    • значение извлекается с помощью регулярного выражения.

Модифицированный скрипт:

Пожалуйста, измените следующим образом.

От:
let domain = results.split("www.")[1].split("/")[0];
To:
const temp = results.match(/https?:\/\/(www.)?(.+?)\//);
let domain = temp.length == 2 ? temp[1] : temp.length == 3 ? temp[2] : "No match";

Примечание:

К сожалению, я не уверен в других значениях input. Я проверил это для Southwest Airlines и City of Houston.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...