Проверка URL через Google Sheets

Мы написали скрипт для гугл таблицы для проверки доступности URL. Количество адресов для проверки не ограниченно, но есть нюансы. Google ограничивает время на выполнение скрипта - не более 6 мин, а также количество запросов на сервер. Поэтому мы сделали пакетную обработку URL. При запуске скрипта он обрабатывает 300 адресов, но его можно запускать бесконечное количество раз, каждый новый раз скрипт идет по следующей необработанной строке, так что на лист можно загрузить сразу тысячи URL и обработать их в несколько этапов.
По кнопке открывается гугл документ. Вы можете скачать его и он будет в формате .txt
Большинство сервисов предоставляет бесплатные услуги только для проверки 500 адресов, мы столкнулись с задачей проверить более 5000 адресов, поэтому необходимо было разработать свой инструмент. Самый удобный для нас способ - загрузить все 5000 URL в гугл таблицу и запуском скрипта включить обработку. У Google есть ограничения - это 6 минут на выполнение скрипта и ограничение по кол-ву запросов в час. Мы расставили таймауты в скрипте и сделали пакетную обработку. Скрипт обрабатывает 300 URL, потом выдает ошибку, ошибку можно игнорировать и просто заново запускать скрипт. Каждый раз он начинает следующую обработку с новой строки.
  • имеем 1 лист. В столбец А загружаем список URL (по количеству URL не ограниченно). В столбце B будут результаты проверки. 1 - URL доступен, 0 - URL не доступен.
  • заходим в Расширения, Apps Script, вставляем код скрипта, сохраняем, запускаем скрипт.
  • в первый раз скрипт будет просить разрешения, разрешаем все.
Целесообразность скрипта
Описание скрипта
перенос строки в архив - скрипт для гугл таблиц
function checkURLsBatch() {
 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 var lastRow = sheet.getLastRow();
 var batchSize = 100; // Проверяем по 100 URL за раз

 // Проверяем, с какой строки начинать (ищем первую пустую ячейку в B)
 var startRow = 2;
 for (var i = 2; i <= lastRow; i++) {
  if (sheet.getRange(i, 2).isBlank()) {
   startRow = i;
   break;
  }
 }

 var endRow = Math.min(startRow + batchSize - 1, lastRow);

 for (var i = startRow; i <= endRow; i++) {
  var url = sheet.getRange(i, 1).getValue();

  if (!url || url.toString().trim() === '') {
   sheet.getRange(i, 2).setValue('');
   continue;
  }

  var urlString = url.toString().trim();

  try {
   var response = UrlFetchApp.fetch(urlString, {
    'muteHttpExceptions': true,
    'followRedirects': true,
    'validateHttpsUrls': false,
    'timeout': 10000 // 10 секунд таймаут
   });

   var statusCode = response.getResponseCode();
   sheet.getRange(i, 2).setValue((statusCode >= 200 && statusCode < 300) ? 1 : 0);

   Utilities.sleep(300); // Уменьшенная пауза

  } catch (error) {
   sheet.getRange(i, 2).setValue(0);
  }
 }

 // Показываем прогресс
 var progress = Math.round(((endRow - 1) / (lastRow - 1)) * 100);
 SpreadsheetApp.getActiveSpreadsheet().toast(
  'Проверено: ' + (endRow - 1) + ' из ' + (lastRow - 1) + ' (' + progress + '%)',
  'Прогресс проверки URL',
  5
 );

 // Если не все проверили, планируем следующую партию
 if (endRow < lastRow) {
  Utilities.sleep(1000); // Пауза 1 секунда
  checkURLsBatch(); // Рекурсивный вызов
 }
}
Скрипт для гугл таблицы "Проверка доступности URL"
Разработка и ведение таблиц в Excel и Гугл таблицах
Самозанятый - Абдуллина Индира Ринатовна, ИНН 025700449805, дата постановки на учёт, в качестве налогоплательщика 12.11.2021
Email для документов: damir.abdullin248@gmail.com, Telegram - https://t.me/mmsenyy27
Made on
Tilda