Автоматическая подготовка таблиц для отчётов Looker Studio
Google Apps Script-автоматизация, которая подготавливает данные из Google Sheets для отчётов Looker Studio: преобразует FBO-остатки в длинный формат и копирует таблицу поисковых запросов.
ОПИСАНИЕ
Проект реализован как Google Apps Script-скрипт для подготовки рабочих данных Google Sheets к дальнейшей визуализации в Looker Studio. Код работает с двумя наборами данных: листом `FBO` с остатками по складам и листом `search_queries` с поисковыми запросами. Центральная функция `updateAllLookerTables()` выступает как единая точка запуска и последовательно вызывает две операции: пересборку FBO-таблицы и копирование таблицы поисковых запросов. Основной технический блок проекта — функция `buildFboLongTable()`. Она открывает исходную Google-таблицу по URL, получает лист `FBO`, считывает весь диапазон данных через `getDataRange().getValues()` и преобразует исходную широкую структуру данных в длинный табличный формат. В исходной таблице товар хранится одной строкой, а склады представлены отдельными колонками. Скрипт разворачивает эти складские колонки в отдельные строки, где каждая строка содержит базовые данные товара, конкретный склад, остаток на этом складе и географическую группировку для Looker Studio. Для обогащения данных используется отдельный лист `mapping` в активной таблице. Из него строится объект `geoMap`, где ключом выступает название склада, а значением — поле `Гео для Looker`. При обработке FBO-остатков скрипт сопоставляет каждый склад с географической группой и добавляет это значение в итоговую таблицу. Если склад отсутствует в mapping-таблице, поле гео остаётся пустым. Такой подход отделяет справочник соответствий от основной логики обработки и позволяет менять привязку складов к гео без изменения кода. Перед записью результата целевой лист `FBO` в активной таблице очищается через `clearContents()`. После этого скрипт формирует новый массив данных в памяти: сначала добавляет заголовки, затем построчно обрабатывает товары и склады. Итоговая таблица записывается одной операцией `setValues()`, что снижает количество обращений к Google Sheets API по сравнению с построчной записью и делает выполнение быстрее и стабильнее на больших диапазонах. Вторая часть проекта — функция `buildSearchQueries2Table()`. Она открывает тот же источник данных, считывает лист `search_queries` и полностью копирует его содержимое в лист `search_queries_2` активной таблицы. Если целевой лист отсутствует, он создаётся автоматически через `insertSheet()`. Перед записью старые данные очищаются, после чего весь массив переносится одной операцией `setValues()`. В коде предусмотрены базовые проверки наличия листов и входных данных. Если исходный лист `FBO`, целевой лист `FBO`, лист `mapping` или лист `search_queries` не найдены, скрипт выбрасывает понятную ошибку с названием проблемного листа. Для `search_queries` также проверяется, что исходный лист не пустой. В проекте нет внешних npm-зависимостей, базы данных, пользовательского интерфейса, сборщика или отдельного backend-слоя; вся логика построена на встроенных возможностях Google Apps Script и API Google Sheets.
ИСПОЛЬЗУЕМЫЕ ИНСТРУМЕНТЫ
- Google Apps Script
- JavaScript
- Google Sheets
- SpreadsheetApp
- Google Sheets ranges
- Looker Studio
- getValues
- setValues
РЕЗУЛЬТАТ
- Реализована единая функция запуска для обновления всех таблиц, используемых в Looker Studio.
- Реализовано чтение исходных данных из внешней Google-таблицы по URL.
- Реализовано преобразование FBO-остатков из широкого формата в длинный формат.
- Сформирована итоговая структура `товар — склад — остаток — гео`, удобная для фильтрации и визуализации в Looker Studio.
- Реализовано сопоставление складов с географическими группами через отдельный лист `mapping`.
- Добавлена автоматическая очистка целевого листа перед записью обновлённых данных.
- Реализована пакетная запись результата в Google Sheets через один вызов `setValues()`.
- Реализовано полное копирование листа `search_queries` в отдельный лист `search_queries_2`.
- Добавлено автоматическое создание листа `search_queries_2`, если он отсутствует.
- Добавлены проверки наличия необходимых листов и базовая обработка пустого источника данных.
AI АССИСТЕНТ
Задать вопрос по этой работе