Многие используют Google Таблицы, чтобы хранить и анализировать данные: цены, остатки, заказы, ассортимент.
Но вручную копировать фид каждый день неудобно — хочется, чтобы всё обновлялось само.
В этой статье я покажу рабочий способ, как сделать, чтобы Google Таблица автоматически подгружала данные из фида по ссылке.
Подойдёт для любого источника — Яндекс.Маркет, Ozon, Wildberries, CRM, 1С, сайт или просто CSV.
---------------------------------------------------------------------------------------------
🚀 Что делает этот скрипт
📌 Автоматически скачивает фид (XML / YML / JSON / CSV) с заданного URL.
📌 Сам определяет формат и корректно его разбирает.
📌 Записывает данные в таблицу построчно, батчами — чтобы не зависало.
📌 Может обновляться по расписанию — раз в час или каждый день в 9:00.
📌 Умеет экономить лимиты — использует ETag / Last-Modified (если сервер поддерживает).
📌 Переживает сбои: делает несколько попыток (ретраи) при сетевых ошибках.
После настройки всё работает полностью автономно. Таблица сама тянет свежие данные, и вы можете просто анализировать результаты.
---------------------------------------------------------------------------------------------
⚙️ Как установить и настроить
1️⃣ Создаём таблицу
Откройте Google Sheets и создайте новый документ.
Назовите, например, «Импорт фида».
2️⃣ Открываем редактор кода
В верхнем меню выберите:
Расширения → Apps Script
Откроется отдельное окно со скриптом.
Удалите из него всё, что там есть, и вставьте весь код из статьи (он ниже).
https://gist.github.com/moix89/bb15ee735cc870f114508ed7a283ac2b
3️⃣ Указываем свой фид
В самом начале кода есть блок:
Замените https://пример.домен/your-feed.yml на вашу реальную ссылку — например:
Если фид закрыт авторизацией (например, нужен токен), добавьте его в FEED_HEADERS:
4️⃣ Сохраняем и запускаем
Нажмите 💾 Сохранить → затем ▶️ Выполнить → onOpen().
Google попросит разрешить доступ — подтвердите.
После этого вернитесь в таблицу — появится новое меню Feed Import.
5️⃣ Проверяем работу
В меню Feed Import выберите пункт:
Обновить сейчас
Скрипт скачает ваш фид, распарсит данные и выведет их прямо на лист.
Появятся строки с названиями, артикулами, ценами, фото и другими полями из вашего фида.
6️⃣ Включаем автообновление
Теперь можно автоматизировать процесс.
В меню Feed Import есть пункты:
- Включить почасовое — обновлять каждые 60 минут.
- Включить ежедневное 09:00 — раз в день утром.
- Выключить автообновления — остановить.
Выбираете нужный вариант — и всё, таблица сама обновляется по расписанию.
---------------------------------------------------------------------------------------------
🧠 Что делает код внутри
Многие спрашивают: «А как он понимает, что за формат — XML или JSON?»
Скрипт сам определяет это по заголовкам и структуре файла.
- Если тело начинается с { или [, значит JSON.
- Если есть ; или , — значит CSV.
- Если встречаются <offer>, <shop> и другие XML-теги — значит YML/XML.
Для каждого типа данных есть свой парсер:
- parseCSV_() — определяет разделитель (;, ,, | или таб) и формирует таблицу.
- parseJSON_() — «расплющивает» вложенные JSON-объекты в плоские столбцы (a.b.c).
- parseYML_XML_() — находит все <offer> из фида Яндекс.Маркета, собирает теги, атрибуты и <param name="...">.
Даже если у вас несколько <picture>, они объединяются в одну строку через |.
---------------------------------------------------------------------------------------------
🧩 Как код экономит квоты
В Google Apps Script есть ограничение на количество запросов и скорость работы.
Чтобы не скачивать одинаковые данные, скрипт использует ETag и Last-Modified:
📦 При каждом запросе он запоминает, какой ETag/дата модификации были у фида.
📦 Если фид не изменился — сервер отвечает 304 Not Modified, и скрипт пропускает обновление.
📦 Это экономит лимиты и ускоряет работу в десятки раз.
---------------------------------------------------------------------------------------------
🔁 Что происходит при ошибках
Иногда фид может не ответить (502, 503, обрыв).
Тогда код не падает, а делает до трёх повторных попыток — с увеличением интервала.
Это реализовано в функции fetchWithRetry_().
Если все попытки неудачны — скрипт выдаст ошибку в лог и остановится, чтобы не портить данные.
---------------------------------------------------------------------------------------------
📏 Как он пишет данные в таблицу
Фид может быть большим (тысячи строк).
Google ограничивает размер одного запроса к листу, поэтому код делит данные на батчи по 20 000 строк:
Эта пауза в 0.1 секунды между блоками защищает от ошибки RequestTooLarge и не нагружает сервер.
Также задаётся ограничение MAX_ROWS = 500000 — чтобы не убить таблицу при гигантских фидах.
Все <param> автоматически становятся отдельными колонками (param:название).
Все <picture> объединяются в одно поле через |.
---------------------------------------------------------------------------------------------
🧰 Как адаптировать под себя
Если вы хотите:
- менять порядок колонок — измените массив preferred в parseYML_XML_().
- сохранять формат листа — уберите sheet.clearContents() в функции writeTable_().
- обновлять только новые строки — добавьте проверку id перед вставкой.
💡 Полезные фишки
💬 Авторизация.
Если фид требует токен — добавьте его в FEED_HEADERS. Например:
🧩 Импорт CSV из CRM.
Можно указать прямую ссылку на CSV-отчёт из вашей системы. Скрипт сам определит разделитель.
🛠 Логика 304 Not Modified.
Если фид не изменился — таблица не трогается. Это важно при больших объёмах, чтобы не перезаписывать зря.
🕓 Гибкое расписание.
Хотите, чтобы обновлялось в 7 утра и 7 вечера? Добавьте ещё одну функцию:
✅ Что в итоге
После установки у вас будет полностью автоматическая схема:
1️⃣ Фид публикуется на сайте / в CRM.
2️⃣ Google Таблица по расписанию скачивает его.
3️⃣ Данные разбираются и красиво ложатся в таблицу.
4️⃣ Можно строить отчёты, фильтры, графики, сводные таблицы — всё всегда актуально.
---------------------------------------------------------------------------------------------
🧾 Преимущества подхода
✔ Без внешних сервисов (Integromat, n8n, Zapier) — всё работает внутри Google.
✔ Бесплатно и стабильно.
✔ Работает с любыми форматами данных.
✔ Простая настройка: один раз вставил код, указал ссылку — и всё.
✔ Можно легко дорабатывать под себя: менять расписание, фильтрацию, формат вывода.
---------------------------------------------------------------------------------------------
🗒 Пример живого сценария
Представим, что у вас есть интернет-магазин, и Яндекс.Маркет каждый день формирует XML-фид с товарами.
Вам нужно видеть актуальные цены и остатки прямо в таблице, чтобы делать сводки по поставщикам.
С помощью этого скрипта вы подключаете фид к Google Sheets, включаете «обновление раз в час» — и всё.
Теперь каждый час у вас в таблице свежие данные. Можно строить дашборды, графики, делать отчёты для рекламы, SEO или бухгалтерии.
---------------------------------------------------------------------------------------------
⚠️ Важно помнить
- В одном проекте Apps Script нельзя запускать более 20 триггеров одновременно.
- Большие таблицы (свыше 500 тыс. строк) лучше делить на несколько.
- Если вы обновляете фид чаще, чем раз в 15 минут — Google может ограничить квоту (лимит UrlFetchApp).
---------------------------------------------------------------------------------------------
🏁 Вывод
Этот скрипт — универсальное решение для всех, кто хочет автоматизировать обновление данных в Google Таблицах.
Он надёжный, лёгкий, не требует сторонних сервисов и идеально подходит для работы с фидами Яндекс.Маркет, Ozon, Wildberries, CSV-отчётами или API.
🧠 Один раз вставил — и забыл.
Теперь ваша таблица всегда свежая и обновляется сама.
---------------------------------------------------------------------------------------------
💬 Делитесь опытом!
А вы уже пробовали подключать фид к Google Таблицам?
Пишите в комментариях 👇, с какими источниками работаете — Яндекс.Маркет, Ozon, Wildberries, CRM, 1С или свой сайт.
Будет интересно обменяться примерами, какие фиды парсятся идеально, а где нужно чуть доработать код.
📌 Хэштеги для Дзена
#googleтаблицы #yandexmarket #ozon #wildberries #xml #csv #json #yml #фид #интеграция #автоматизация #googleappsscript #скрипт #инструкция #гайды #таблицы #данные #онлайнбизнес #crm #1с #excel #аналитика #дашборд #интернетмагазин #itрешения #noсode #lowcode