Автоматическая подготовка таблиц для отчётов 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 АССИСТЕНТ

Задать вопрос по этой работе