Найти в Дзене
Хитрости Жизни PRO

📊 Как автоматически обновлять Google Таблицу из фида (XML / YML / JSON / CSV)

Многие используют Google Таблицы, чтобы хранить и анализировать данные: цены, остатки, заказы, ассортимент.
Но вручную копировать фид каждый день неудобно — хочется, чтобы всё обновлялось само. В этой статье я покажу рабочий способ, как сделать, чтобы Google Таблица автоматически подгружала данные из фида по ссылке.
Подойдёт для любого источника — Яндекс.Маркет, Ozon, Wildberries, CRM, 1С, сайт или просто CSV. --------------------------------------------------------------------------------------------- 📌 Автоматически скачивает фид (XML / YML / JSON / CSV) с заданного URL.
📌 Сам определяет формат и корректно его разбирает.
📌 Записывает данные в таблицу построчно, батчами — чтобы не зависало.
📌 Может обновляться по расписанию — раз в час или каждый день в 9:00.
📌 Умеет экономить лимиты — использует ETag / Last-Modified (если сервер поддерживает).
📌 Переживает сбои: делает несколько попыток (ретраи) при сетевых ошибках. После настройки всё работает полностью автономно. Табли
Оглавление
Как автоматически обновлять Google Таблицу из фида (XML / YML / JSON / CSV)
Как автоматически обновлять Google Таблицу из фида (XML / YML / JSON / CSV)

Многие используют 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️⃣ Указываем свой фид

В самом начале кода есть блок:

-2

Замените https://пример.домен/your-feed.yml на вашу реальную ссылку — например:

-3

Если фид закрыт авторизацией (например, нужен токен), добавьте его в FEED_HEADERS:

-4

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 строк:

-5

Эта пауза в 0.1 секунды между блоками защищает от ошибки RequestTooLarge и не нагружает сервер.

Также задаётся ограничение MAX_ROWS = 500000 — чтобы не убить таблицу при гигантских фидах.

-6

Все <param> автоматически становятся отдельными колонками (param:название).

Все <picture> объединяются в одно поле через |.

---------------------------------------------------------------------------------------------

🧰 Как адаптировать под себя

Если вы хотите:

  • менять порядок колонок — измените массив preferred в parseYML_XML_().
  • сохранять формат листа — уберите sheet.clearContents() в функции writeTable_().
  • обновлять только новые строки — добавьте проверку id перед вставкой.

💡 Полезные фишки

💬 Авторизация.

Если фид требует токен — добавьте его в FEED_HEADERS. Например:

-7

🧩 Импорт CSV из CRM.

Можно указать прямую ссылку на CSV-отчёт из вашей системы. Скрипт сам определит разделитель.

🛠 Логика 304 Not Modified.

Если фид не изменился — таблица не трогается. Это важно при больших объёмах, чтобы не перезаписывать зря.

🕓 Гибкое расписание.

Хотите, чтобы обновлялось в 7 утра и 7 вечера? Добавьте ещё одну функцию:

-8

✅ Что в итоге

После установки у вас будет полностью автоматическая схема:

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