Обход лимита функции importxml в Google Sheets


Обход лимита на импорт с помощью функции importxml Google Sheets

При парсинге с использованием гугл таблиц может случиться, что при частом использовании данной функции в течении дня можно достичь лимита запросов. Для того чтобы этого не случилось, как вариант, можно использовать парсинг данных с использованием регулярных выражений.

При получении данных из сайта, который работает задержка получения данных будет меньше, в случае парсинга данных из вебархива, скорость запросов будет ниже, поэтому для таких запросов необходимо больше времени.

Для того чтобы использовать парсинг в связке с регуляркой, необходимо перейти в (Инструменты > Редактор сценариев) и в появившемся окне удалить все данные демо-функции, после чего вставить представленный ниже код:


    function importRegex(url, regexInput) {
  var output = '';
  var fetchedUrl = UrlFetchApp.fetch(url, {muteHttpExceptions: true});
  if (fetchedUrl) {
    var html = fetchedUrl.getContentText();
    if (html.length && regexInput.length) {
      output = html.match(new RegExp(regexInput, 'i'))[1];
    }
  }
  // Задержка, чтобы не перегружть запросами, а в случае парсинга
  // вебархива увеличить как минимум до 5000, т.к. данные могут
  // подгружаться медленнее

  Utilities.sleep(1000);
  return output;
}

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

После введения функции нажимаем ввод и ждем, спустя промежуток времени, который не превышает время, которое вы указали в функции, данные будут получены. Для получения других данных, указывем теги, которые необходимо получить. Обязательно необходимо правильно составить регулярное выражение, так как можно получить не те данные, которые хотелось)):


 = importRegex('https://4python.pythonanywhere.com/checker4registration.html';'<#title>(.*)<\/title>')
    - без решетки