
Гугл таблицы (Google Sheets) — бесплатный онлайн-редактор таблиц от Google: он открывается в браузере по адресу sheets.google.com, хранит файлы в Google Диске и позволяет работать над одной таблицей вместе с коллегами. Кроме обычных формул в нём есть функции IMPORTXML, IMPORTHTML и IMPORTDATA, которые забирают данные прямо с сайтов, поэтому таблица годится и для проверки сайтов.
Ниже — коротко об основах (как создать таблицу, открыть доступ по ссылке, чем она отличается от Excel), а затем главное для вебмастера: как вытащить title, h1 и description со списка страниц и как следить за кодами ответа и сроками SSL-сертификатов прямо в таблице, не устанавливая ничего на сервер.
Что такое Google Таблицы и как они работают
Google Таблицы — часть пакета редакторов Google (Документы, Таблицы, Презентации). Файл живёт не на вашем диске, а в Google Диске, поэтому его не нужно пересылать: вы отправляете ссылку, и все видят одну и ту же актуальную версию. Изменения сохраняются автоматически, история правок доступна в меню Файл → История версий. Для работы нужен аккаунт Google — тот же, что для Gmail.
Вход в Google Таблицы — через страницу sheets.google.com или из Google Диска: после авторизации вы попадаете в список своих таблиц, где видны и файлы, которыми с вами поделились. Отдельного «личного кабинета» у сервиса нет — это и есть ваш аккаунт Google. На телефоне то же самое делает приложение «Google Таблицы».
С точки зрения вебмастера важно одно отличие от настольного редактора: формулы в Google Таблицах выполняются на серверах Google. Когда вы пишете функцию, которая загружает страницу, запрос к сайту отправляет не ваш компьютер, а инфраструктура Google. Из этого следуют и возможности (таблица сама обновляет данные, пока она открыта), и ограничения, о которых пойдёт речь ниже.
Как создать гугл таблицу
- Самый быстрый способ — набрать в адресной строке браузера
sheets.new: сразу откроется новая пустая таблица. - Через Google Диск: кнопка Создать → Google Таблицы. Файл появится в текущей папке Диска.
- Со страницы sheets.google.com: блок «Создать таблицу» с пустым файлом и шаблонами.
- Из Excel: загрузите файл .xlsx в Google Диск и откройте его в Таблицах, либо в открытой таблице выберите Файл → Импортировать.
Название по умолчанию — «Новая таблица»; поменяйте его сразу, кликнув по заголовку слева вверху, иначе через месяц в Диске будет десяток одинаковых файлов.
Как создать гугл таблицу с общим доступом по ссылке
Доступ настраивается кнопкой Настройки доступа в правом верхнем углу таблицы. Там есть два независимых механизма:
- Конкретные люди. Вводите адреса почты и выбираете роль: читатель, комментатор или редактор. Это самый безопасный вариант — доступ получают только названные аккаунты.
- Общий доступ по ссылке. В блоке «Общий доступ» переключите «Доступ ограничен» на «Все, у кого есть ссылка» и выберите роль. Нажмите «Копировать ссылку» и отправьте её.
Практическое правило: по ссылке давайте права читателя, а права редактора — только конкретным людям. Ссылка пересылается дальше, попадает в чаты и индексируемые страницы, а у редактора по ссылке есть доступ ко всему, включая скрипты таблицы (это станет важно, когда в скрипте появится API-ключ).
Гугл таблицы и Эксель: в чём разница
По формулам и форматированию редакторы близки, и большинство файлов переносится между ними без потерь. Различия — в том, где работает программа, как устроена совместная работа и как таблица получает данные из интернета.
| Что сравниваем | Google Таблицы | Microsoft Excel |
|---|---|---|
| Где работает | В браузере и мобильном приложении, файл хранится в Google Диске | Настольное приложение; есть веб-версия Excel с файлами в OneDrive |
| Совместная работа | Встроена: несколько человек правят одновременно, правки видны сразу | Совместное редактирование работает для файлов в OneDrive или SharePoint |
| Загрузка данных с сайтов | Функции IMPORTXML, IMPORTHTML, IMPORTDATA, IMPORTFEED прямо в ячейке | Power Query (источник «Из Интернета»), функция WEBSERVICE |
| Кто делает запрос к сайту | Серверы Google | Ваш компьютер |
| Автоматизация | Apps Script (JavaScript), триггеры по расписанию | VBA, Office Scripts |
| Обмен файлами | Экспорт: Файл → Скачать → Microsoft Excel (.xlsx), CSV, PDF | Родной формат .xlsx |
Для задач вебмастера решающая строка — «Кто делает запрос к сайту». Excel ходит в интернет с вашего IP и видит сайт так, как видите его вы. Google Таблицы ходят с адресов Google: сайт с геоблокировкой или защитой от ботов может отдать им другую страницу или ошибку, а внешние API считают все эти запросы как пришедшие от Google.
Google Таблицы для вебмастера: какие функции тянут данные с сайтов
Четыре функции импорта закрывают большую часть рутинных задач. Все они описаны в справке Google: IMPORTXML, IMPORTHTML, IMPORTDATA.
| Функция | Что забирает | Типичная задача |
|---|---|---|
IMPORTXML(ссылка; xpath) | Любой элемент HTML или XML по запросу XPath | title, h1, meta description, canonical, ссылки из sitemap.xml |
IMPORTHTML(ссылка; "table"; N) | N-ю таблицу или список ("list") со страницы | Забрать таблицу тарифов конкурента или список из статьи |
IMPORTDATA(ссылка) | Файл CSV или TSV по ссылке | Выгрузки, отчёты, ответы API в формате CSV |
IMPORTFEED(ссылка) | RSS или Atom | Следить за новыми публикациями |
По справке Google, функции IMPORTHTML, IMPORTFEED, IMPORTDATA и IMPORTXML пересчитываются раз в час, IMPORTRANGE — каждые 30 минут. Для мониторинга «прямо сейчас» это медленно, для ежедневного контроля — достаточно.
Замечание о синтаксисе: в таблице с русскими региональными настройками аргументы разделяются точкой с запятой, а десятичный разделитель — запятая. Поэтому в примерах ниже стоит ;. Если у таблицы английские региональные настройки (Файл → Настройки), пишите запятые. Названия функций по умолчанию английские — в настройках таблицы включён флажок «Всегда использовать названия функций на английском языке».
IMPORTXML в Google Таблицах: title, h1 и description со списка страниц
Положите адреса страниц в колонку A (обязательно с https://), а в соседние колонки — формулы. Для строки 2 они выглядят так:
Title: =IMPORTXML(A2; "/html/head/title")
Длина title: =LEN(B2)
H1: =TEXTJOIN(" | "; TRUE; IMPORTXML(A2; "//h1"))
Description: =IMPORTXML(A2; "//meta[@name='description']/@content")
Canonical: =IMPORTXML(A2; "//link[@rel='canonical']/@href")
Robots: =IMPORTXML(A2; "//meta[@name='robots']/@content")
Несколько деталей, на которых спотыкаются чаще всего:
- Почему
/html/head/title, а не//title. Запрос//titleнаходит и элементы<title>внутри встроенных SVG-иконок. Результат «растекается» на несколько ячеек вниз и затирает соседние строки или даёт ошибку #REF!. Путь от корня берёт только заголовок документа. - Несколько h1. Если на странице два h1, IMPORTXML вернёт два значения.
TEXTJOINсклеивает их в одну ячейку — сразу видно и дубль, и пустой h1. - Регистр атрибутов. XPath чувствителен к регистру:
@name='description'не найдётname="Description". Пустая ячейка там, где description точно есть, — повод открыть исходный код страницы. - Контент, который дорисовывает JavaScript. IMPORTXML читает HTML в том виде, в котором его отдал сервер, скрипты не выполняются. Если title или h1 ставит JavaScript, в таблице будет пусто или шаблонное значение. Это заодно честный тест: примерно так же страницу видит простой краулер.
- Картинки без alt.
=COUNTA(IMPORTXML(A2; "//img[not(@alt)]/@src"))считает изображения без атрибута alt. Пустойalt=""у декоративной картинки — не ошибка, поэтому этот запрос его не ловит.
Длину title удобно подсветить: Формат → Условное форматирование, правило «Ваша формула» с условием вида =$C2>70. Что писать в этих тегах и почему длина важна, разобрано в статье о title и description.
Как вытащить все URL из sitemap.xml
IMPORTXML читает и XML. Но в sitemap.xml объявлено пространство имён по умолчанию, и простой запрос //loc ничего не находит. Помогает функция local-name():
=IMPORTXML("https://example.com/sitemap.xml"; "//*[local-name()='loc']")
Получится колонка адресов, по которой можно сразу запустить формулы из предыдущего блока. Если sitemap — это индекс из нескольких файлов, первая формула вернёт адреса вложенных sitemap; для каждого из них формулу нужно повторить.
Типичные ошибки IMPORTXML
- #N/A с сообщением «Could not fetch url» / «Не удалось получить данные». Сайт не ответил серверам Google, ответил ошибкой или показал проверку на бота. Сравните с тем, что видит обычный запрос: проверка HTTP-заголовков покажет код ответа и цепочку редиректов.
- «Imported content is empty» / пустой результат. Запрос XPath ничего не нашёл: элемента нет в исходном HTML, опечатка в пути или разный регистр атрибутов.
- #REF! «Array result was not expanded». Функция вернула несколько значений, а ячейки ниже заняты. Освободите место или оберните формулу в
TEXTJOINилиINDEX(...; 1). - Бесконечное «Loading...». В таблице слишком много функций импорта одновременно. Делите список на части и не держите сотни IMPORTXML на одном листе.
Мониторинг сайтов в гугл таблице через открытый API enterno
IMPORTXML отвечает на вопрос «что написано на странице». Для вопросов «жив ли сайт», «какой код ответа», «сколько дней до конца сертификата» удобнее готовый ответ в CSV. У enterno для этого есть открытый API без ключа:
https://enterno.io/api/open/<инструмент>?q=<домен>&format=csv
Ответ — CSV из двух колонок: key и value. Такой формат IMPORTDATA понимает сразу. Без ключа доступны, в частности, http-status, headers, ssl, dns, whois, mx, redirects, robots. Полный список отдаёт сам адрес https://enterno.io/api/open/.
Код ответа сайта: IMPORTDATA + http-status
Вставьте в пустую ячейку:
=IMPORTDATA("https://enterno.io/api/open/http-status?q=example.com&format=csv")
Таблица развернёт ответ в две колонки примерно такого вида:
key,value
url,https://example.com
code,200
message,OK
final_url,https://example.com/
redirect_count,0
response_time_ms,82
server,cloudflare
content_type,text/html
Здесь code — HTTP-код, final_url — адрес после всех редиректов, redirect_count — сколько было переадресаций, response_time_ms — время ответа. Что означает каждый код, собрано в справочнике кодов состояния HTTP.
Как достать одно значение: VLOOKUP по колонке key
Для таблицы со списком доменов нужна не вся выгрузка, а одно поле в строке. Домен лежит в A2, формулы — в соседних колонках:
Код ответа: =VLOOKUP("code"; IMPORTDATA("https://enterno.io/api/open/http-status?q="&A2&"&format=csv"); 2; FALSE)
Дней до конца SSL: =VLOOKUP("certificate.days_left"; IMPORTDATA("https://enterno.io/api/open/ssl?q="&A2&"&format=csv"); 2; FALSE)
Статус сертификата: =VLOOKUP("certificate.status"; IMPORTDATA("https://enterno.io/api/open/ssl?q="&A2&"&format=csv"); 2; FALSE)
Действует до: =VLOOKUP("certificate.valid_to"; IMPORTDATA("https://enterno.io/api/open/ssl?q="&A2&"&format=csv"); 2; FALSE)
Тот же результат даёт FILTER по колонке key, но VLOOKUP короче. Дальше — условное форматирование: правило «Ваша формула» =$C2<14 подсветит красным сертификаты, которым осталось меньше двух недель, а =$B2<>200 — сайты, которые отвечают не кодом 200. Дату из certificate.valid_to таблица обычно распознаёт как дату, и по ней можно сортировать.
Почему срок сертификата стоит держать перед глазами и что делать, когда он подходит к концу, — в статье как проверить SSL-сертификат.
Ограничения: лимит на IP и ошибка 429
У открытого API лимит считается на IP-адрес: 20 запросов в минуту для http-status, 30 для ssl, 10 для whois. IMPORTDATA обращается к API не с вашего адреса, а с серверов Google, и эти адреса общие для множества таблиц. Поэтому на листе с десятками строк часть формул получит ответ 429 (Too Many Requests) и покажет #N/A — даже если лично вы сделали всего несколько запросов.
Отсюда правила:
- Каждая формула — это отдельный запрос. Три колонки с IMPORTDATA на двадцать доменов — это шестьдесят запросов при каждом пересчёте.
- IMPORTDATA через формулы хорош для небольшого списка: своих сайтов, пары клиентских проектов.
- Для десятков доменов переходите на Apps Script с паузами между запросами или на ключ API.
Когда формул мало: проверка сайтов через Apps Script
Apps Script — встроенный в Google Таблицы JavaScript. Он открывается через Расширения → Apps Script. В отличие от формул, скрипт сам решает, в каком темпе делать запросы, пишет результат в ячейки и запускается по расписанию. Сетевые запросы делает UrlFetchApp, разбор CSV — Utilities.parseCsv из класса Utilities.
Скрипт ниже проходит по колонке A и пишет в колонку B число дней до конца сертификата:
// Лист: в колонке A с 2-й строки — домены, в колонку B пишем дни до конца сертификата
function checkSsl() {
const sheet = SpreadsheetApp.getActiveSheet();
const last = sheet.getLastRow();
if (last < 2) return;
const domains = sheet.getRange(2, 1, last - 1, 1).getValues();
domains.forEach(function (row, i) {
const domain = String(row[0]).trim();
if (!domain) return;
const url = 'https://enterno.io/api/open/ssl?q=' +
encodeURIComponent(domain) + '&format=csv';
const resp = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
const cell = sheet.getRange(i + 2, 2);
if (resp.getResponseCode() !== 200) {
cell.setValue('HTTP ' + resp.getResponseCode()); // 429 — упёрлись в лимит
} else {
const rows = Utilities.parseCsv(resp.getContentText());
const hit = rows.find(function (r) { return r[0] === 'certificate.days_left'; });
cell.setValue(hit ? Number(hit[1]) : 'нет данных');
}
Utilities.sleep(2500); // пауза, чтобы не выбирать лимит одной пачкой
});
}
// Один раз запустите вручную — дальше проверка пойдёт по расписанию
function installTrigger() {
ScriptApp.newTrigger('checkSsl').timeBased().everyHours(6).create();
}
При первом запуске Google попросит разрешение на доступ к таблице и внешним адресам — это нормально для UrlFetchApp. Функцию installTrigger запустите один раз вручную, и проверка будет выполняться каждые шесть часов. Учтите, что UrlFetchApp тоже ходит с адресов Google, поэтому пауза между запросами обязательна. У скриптов есть свои квоты на время выполнения и число запросов в сутки — они перечислены в документации Apps Script.
Десятки доменов: API-ключ и /api/v4
Когда доменов десятки, запросы стоит привязать к своему аккаунту, а не к общим адресам Google: скрипт обращается к /api/v4 с вашим API-ключом в заголовке X-API-Key. Адрес и параметры нужного эндпоинта возьмите из документации API, а ключ храните в свойствах скрипта (Настройки проекта → Свойства скрипта), а не в ячейке:
const key = PropertiesService.getScriptProperties().getProperty('ENTERNO_API_KEY');
const resp = UrlFetchApp.fetch(v4Url, {
headers: { 'X-API-Key': key },
muteHttpExceptions: true
});
Помните о правах: всякий, у кого есть права редактора таблицы, может открыть привязанный к ней скрипт и его свойства. Не давайте права редактора по ссылке таблице, в которой лежит ключ.
Если же нужны не отчёты раз в несколько часов, а тревога в ту минуту, когда сайт упал, таблица — неподходящий инструмент. Для этого есть мониторинг с уведомлениями; условия — на странице тарифов.
Как проверить результат из таблицы вручную
Любую подозрительную строку стоит перепроверить не формулой, а напрямую — так видно подробности, которые в ячейку не помещаются:
- Проверка HTTP-заголовков и доступности — код ответа, редиректы и заголовки, если IMPORTXML вернул #N/A.
- Проверка SSL-сертификата — цепочка, издатель, срок действия и совпадение имени, если в таблице статус не
valid. - Документация API — какие инструменты и поля доступны для таблицы или скрипта.
Если сайт не открывается вовсе, пройдите по шагам из статьи как проверить, работает ли сайт. А если таблица стала тесной и хочется писать проверки кодом, логичное продолжение — проверки сайтов на Python.
Частые вопросы
Google Таблицы бесплатные?
Да, для личного аккаунта Google Таблицы бесплатны. Файлы занимают место в общем хранилище аккаунта вместе с Gmail и Диском. Платные тарифы Google Workspace нужны организациям — для своего домена в почте, администрирования и расширенных квот.
Можно ли открыть гугл таблицу без аккаунта Google?
Просматривать — да, если владелец включил «Все, у кого есть ссылка». Редактировать без входа в аккаунт нельзя. Создать свою таблицу тоже можно только с аккаунтом.
Почему IMPORTXML возвращает #N/A на странице, которая открывается в браузере?
Запрос делает не ваш браузер, а серверы Google. Сайт может блокировать их как ботов, показывать им страницу проверки или отвечать по-другому из-за геоограничений. Ещё одна причина — нужный элемент добавляется JavaScript, а IMPORTXML его не выполняет.
Как часто обновляются данные из IMPORTDATA и IMPORTXML?
По справке Google — раз в час, пока таблица открыта. Если данные нужны прямо сейчас, пересоздайте формулу (например, вырежьте и вставьте её обратно) или используйте Apps Script, который запускается по кнопке или триггеру.
Почему в таблице с доменами часть строк показывает ошибку 429?
Лимит открытого API считается на IP-адрес, а IMPORTDATA обращается к нему с общих адресов Google. Когда формул много, лимит исчерпывается. Сократите число формул, перенесите проверку в Apps Script с паузами или используйте API-ключ.
Можно ли сохранить гугл таблицу в Excel?
Да: Файл → Скачать → Microsoft Excel (.xlsx). Функции IMPORTXML и IMPORTDATA в Excel не работают, поэтому в скачанном файле останутся последние загруженные значения или ошибки в этих ячейках.