Автоматический импорт данных о расходах в Google Analytics 4. Часть II

25 марта, 2024

В предыдущем материале вы выполнили первый этап настройки автоматического импорта данных о расходах в Google Analytics 4, а именно настроили свой SFTP-сервер, создали импорт данных в самом интерфейсе GA4, а также установили соединение с помощью ключа SSH. В этом руководстве завершим процесс автоматизации, а именно выгрузку данных из рекламных кабинетов (Facebook *, VK, Яндекс.Директ и т.д.) с помощью скрипта на Python, который будет обновлять статистику рекламных кампаний по расписанию и загружать все это в файл upload.csv.

* Деятельность американской компании Meta (бывшая Facebook) запрещена в России, организация признана экстремистской.

Рекомендую к прочтению:

Это руководство основано на материалах Ахмеда Али (Ahmed Ali) и его публикациях на ga4auditor.com с моими комментариями и дополнениями, поэтому большая часть материала будет посвящена автоматическому импорта данных из Facebook (Meta).

Перед тем, как читать и затем повторять нижеописанные шаги, вы в обязательном порядке должны выполнить все настройки из первой части, а именно:

  • создать проект в Google Cloud;
  • создать виртуальную машину в Compute Engine;
  • настроить правило брандмауэра;
  • установить SFTP-сервер;
  • создать импорт данных по SFTP в интерфейсе Google Analytics 4 и получить открытый SSH-ключ;
  • в директорию созданного пользователя в /.ssh/authorized_keys добавить открытый SSH-ключ от GA4;
  • в конфиге виртуальной машины открыть доступ к соединению и по паролю, и по ключу;
  • проверить соединение.

Только после этого вы можете переходить к загрузке файла upload.csv с рекламными данными на сервер, из которого они затем будут импортироваться в ваш ресурс Google Analytics 4. Давайте приступим к следующим этапам!

Создание приложения Facebook API

Чтобы выгружать статистику из своих рекламных кабинетов, вам необходимо использовать API сервисов. Для Facebook - это Marketing API (Facebook Marketing API).

Перейдите на сайт Facebook для разработчиков и нажмите кнопку Создать приложение:

Создание приложения в Meta for Developers

Выберите Другое в окне использования приложения:

Для чего вам нужно это приложение? Другое

Выберите тип приложения - Компания (Создание и настройка таких объектов компании, как Страницы, мероприятия, группы, реклама, Messenger, WhatsApp и API Graph для Instagram, с помощью доступных разрешений, функций и продуктов компаний):

Тип приложения - Компания

Нажмите Далее. На заключительном шаге д

Информация о приложении

Нажмите Создать приложение. После этого перейдите по ссылке в настройки вашего бизнес-менеджера (Meta Business Suite) и нажмите на вкладку Приложения: Проверьте, чтобы с вашим бизнес-менеджером было связано новое приложение:

Связь приложения с аккаунтом

Если нет, тогда нажмите Добавить - Добавить ID приложения.

Добавление приложения к аккаунту

Узнать идентификатор приложения можно на странице приложений:

ID приложения

Примечание: если вы не этапе создания приложения вы указали бизнес-менеджер, то подключать приложение к аккаунту через ID не нужно. Оно автоматически появится в вашем списке.

Теперь в списке приложений выберите свое и нажмите на Назначить объекты:

Назначить объекты

Из списка выберите рекламные аккаунты, из которых вы хотите получать статистику и отправлять ее в Google Analytics 4. Нажмите Добавить:

Выбор рекламных аккаунтах для приложения

Получение токена (маркера доступа)

Почти для каждого запроса, который вы делаете к API Facebook, вам нужно передать токен (маркер) доступа, чтобы получить какой-либо результат. Маркер доступа — это строка со сгенерированным значением, которая идентифицирует пользователя, приложение или страницу и может использоваться приложением для вызовов API Graph. Когда человек входит в приложение с помощью входа через Facebook и предоставляет запрошенные разрешения, приложение получает маркер доступа, который обеспечивает временный защищенный доступ к различным API Facebook.

Маркеры доступа пользователей бывают двух видов: краткосрочные и долгосрочные. Краткосрочные маркеры обычно действуют примерно 1–2 часа, а долгосрочные — не менее 60 дней.

Для получения токена перейдите на страницу приложений. Нажмите на свое приложение:

Выбор приложения

На открывшейся странице прокрути внизу, пока не увидите API Marketing. Нажмите на него:

Настройка API Marketing

API Marketing — это подборка конечных точек API Graph, которые можно использовать для эффективной рекламы на Facebook и в Instagram. С его помощью вы сможете запрашивать нужную вам статистику из рекламных кабинетов Facebook.

На открывшейся странице перейдите в раздел Инструменты, напротив разрешений для маркера поставьте три галочки для ads_management, ads_read и read_insights, а затем нажмите Получить маркер:

Получение токена (маркера) доступа

После этого на экране появится ваш токен. Обязательно сохраните его, так как он понадобится вам на следующих шагах.

Сохранение токена

Вы можете проверить срок его действия, перейдя на страницу отладчика маркеров доступа. На вкладке Маркер доступа вставьте скопированный токен и нажмите кнопку Отладка:

Срок действия токена

На скриншоте я выделил три поля со сведениями о токене - когда выдан, когда истекает и когда истекает доступ к данным. Как видите, токен доступа имеет ограничение по сроку службы (~60 дней), поэтому его следует периодически продлевать. Пожалуйста, учтите это при дальнейшей настройке автоматического импорта данных в Google Analytics 4.

Теперь, когда у вас есть токен доступа, пришло время написать функцию на языке программирования Python для взаимодействия с API Facebook.

Написание программы на Python

Чтобы работать с API аналитических систем и выполнять запросы на Python, необходимо использовать специальное программное обеспечение (ПО). Такое ПО называют интегрированной средой разработки (IDE). Наиболее популярным Python IDE является PyCharm. Еще очень распространена IDE Spyder и JupyterLab.

Многие интернет-маркетологи и аналитики данных в своей работе так же используют блокнот Jupyter Notebook, который можно установить с помощью дистрибутива Anaconda, включающий набор популярных библиотек для работы с данными, таких как: NumPy, SciPy, Astropy и др. Еще есть Visual Studio Code и много других продуктов.

Как вы понимаете, выбор тех или иных программ зависит исключительно от ваших предпочтений в изучении или от тех инструментов, которые используются в вашей компании. Однако для работы с API Google Analytics 4 я предлагаю использовать другой сервис - Google Colab.

Пример проекта в Colab

Colaboratory (или просто Colab) - это бесплатный продукт Google Research. Он позволяет любому человеку писать и выполнять код Python прямо в браузере, без установки каких-либо программ и без дополнительной настройки. По сути, Colab - это размещенная на хостинге служба Jupyter Notebook, которая предоставляет доступ к своим вычислительным ресурсам, включая графические процессоры, благодаря которым можно заниматься не только базовой аналитикой данных, но и более сложными исследованиями в области машинного обучения. Google в Colab поддерживает актуальное состояние библиотек и их взаимную работу. Ваши проекты сохраняются не локально на компьютере, а на Google Диске. Они также могут быть загружены с GitHub. Таким образом, вы можете легко работать над одним проектом с другими людьми и делиться файлами со своей командой. Colab - отличное решение для начинающих пользователей, студентов, специалистов по обработке данных и исследователей в области искусственного интеллекта.

Чтобы создать свой первый проект в Colab, авторизуйтесь в своей учетной записи Gmail и перейдите по ссылке. Вам откроется приветственное окно и ваши проекты:

Первый экран в Colaboratory

Если вы никогда раньше не работали с Colaboratory, то никаких проектов, кроме демонстрационного, в списке вы не увидите. Для создания первого проекта нажмите на Создать блокнот:

Создание блокнота

В новом окне вы увидите только что созданный блокнот, в котором вы будете писать код программы на Python. При желании вы можете переименовать свой проект, задав ему понятное название, например - Facebook Cost Data:

Переименование блокнота Colab

Однако это делать вовсе необязательно, так как в Colab мы просто проверим код выгрузки данных из Facebook, написанный на Python, а сама программу затем перенесем в Google Cloud, где она и будет запускаться с помощью Cloud Functions. Проект в Colab нам впоследствии не пригодится.

Скопируйте эту команду:

И вставьте ее в первую ячейку вашего проекта. Нажмите иконку запуска (значок play), чтобы код в ячейке сработал. В Colab это будет выглядеть так:

Установка библиотеки Facebook Business SDK

Напротив строки с кодом должна появится зеленая галочка, свидетельствующая об успешном выполнении кода:

Успешное выполнение ячейки с кодом

В конце ячейки вы можете увидеть строчки примерно такого содержания:

Поздравляю! Вы установили библиотеку Python для Facebook Business SDK. Facebook Business SDK — это универсальный сервис, который помогает партнерам Facebook лучше обслуживать свой бизнес. Партнеры используют несколько API Facebook для удовлетворения потребностей своих клиентов. Внедрение всех этих API и поддержание их актуальности на различных платформах может занять много времени и в конечном итоге оказаться непомерно трудным.

По этой причине Facebook разработал Business SDK, объединивший многие из своих API в один SDK, чтобы упростить внедрение и обслуживание. Business SDK — это обновленная версия Marketing API SDK, которая включает в себя Marketing API, а также множество API-интерфейсов Facebook с разных платформ, таких как Pages, Business Manager, Instagram и т. д.

Установив библиотеку, вы можете приступить к написанию функции Python, которая будет вызывать Facebook Marketing API и получать необходимые данные из вашего рекламного кабинета. Скопируйте нижеприведенный код и вставьте его во вторую ячейку Colab:

Примечание: для добавления новой ячейки в Colab над программой нажмите +КОД

, где для полей access_token и account_id вам необходимо указать свои данные:

  • access_token - вместо YOUR_ACCESS_TOKEN токен, который вы получили на предыдущем шаге и сохранили его;
  • account_id - вместо YOUR_AD_ACCOUNT_ID идентификатор рекламного аккаунта (отображается в интерфейсе Facebook Ads);

ID рекламного аккаунта (account_id)

Сам код не является сложным. К каждой строчке я добавил небольшой комментарий. Единственное отличие, которое есть в моем скрипте по сравнению с автором, это то, что в параметре date_preset я указал значение maximum (возвращает данные за период до 37 месяцев), а у него yesterday (вчера). Поскольку на момент написания этого руководства у меня нет активных аккаунтов Facebook, мне пришлось ставить диапазон больший, чем за "вчера". yesterday нам понадобится в итоговой программе импорта данных, которая будет запускаться в облаке, поскольку обновление данных в Google Analytics 4 будет происходить ежедневно за вчерашний день. Подробнее о других параметрах читайте в официальной документации Facebook.

Запустив код в ячейке, вы получите примерно такой результат:

Результат выполнения программы

А чтобы таблица с итоговой статистикой выглядела удобочитаемой, вы можете выполнить команду result в следующей ячейке:

Итоговая таблица с данными рекламных кампаний Facebook

Как видите, это простая таблица с данными ваших рекламных кампаний за максимальный диапазон дат. Код на Python работает, и это очень хорошо! Теперь вам нужно отформатировать данные в соответствии со схемой Google Analytics 4, которую вы используете в импорте данных (см. предыдущую статью). Схема GA4 состоит из следующих полей:

  1. source (источник кампании)
  2. medium (канал кампании)
  3. campaign_id (идентификатор кампании)
  4. campaign_name (название кампании)
  5. date (дата)
  6. impressions (показы)
  7. clicks (клики)
  8. cost (расходы)

Примечание: для Google Analytics 4 обязательным полем для импорта данных является идентификатор кампании (campaign_id). Его значение извлекается из метки utm_id, о которой я подробно писал в этом материале, в этой публикации и здесь. Поэтому если ваши рекламные объявления Facebook не промечены нужными метками, в числе которых utm_source, utm_medium, utm_campaign и utm_id, то импорт данных в GA4 не получится. Сначала добавьте нужные utm_метки в ваши рекламные объявления, а затем вернитесь к этим настройкам.

Помните про официальный шаблон Google, который мы загружали во время тестирования SFTP-сервера? В нем как раз присутствуют все необходимые для импорта поля.

Шаблон импорта данных из справки Google

Данные, которые вы выгрузили с помощью кода Python, уже структурированы как нужно. Остается только переименовать столбцы spend на cost и дату. Кроме того, вам нужно включить два новых столбца для источника и канала кампании в зависимости от используемых вами параметров UTM.

За это отвечает следующая функция:

Она принимает полученный ранее датафрейм и возвращает его в нужном формате, заменяя название столбца spend на cost, date_start на date, а также добавляет два новых столбца source со значением facebook и medium со значением cpc. Еще функция удаляет столбец date_stop, который в схеме данных Google Analytics 4 не нужен.

Примечание: если в ваших utm_метках передаются другие значения utm_source (не facebook) и utm_medium (не cpc), тогда вам необходимо в коде поменять их на свои.

Итоговый код, который вы можете скопировать и вставить в новую ячейку, выглядит так:

, где для полей access_token и account_id вам необходимо указать свои данные (не забудьте!).

В Colab результат выполнения кода будет выглядеть так:

Результат выполнения программы

И в удобочитаемом виде с использованием команды formatted_result:

Таблица с отформатированными данными (согласно схеме данных GA4)

Как видите, в итоговых результатах название полей стали точно такими же, как и в схеме данных Google Analytics 4. А еще дополнительно добавился два столбца (source, medium) и был удален date_stop.

Данные к загрузке на сервер подготовлены. Теперь перейдем к следующему шагу и рассмотрим, как подключиться к нашему SFTP-серверу и передать отформатированный файл upload.csv для обработки Google Analytics 4.

Ссылка на мой проект Colab.

Загрузка структурированного файла на SFTP-сервер

Чтобы отправить файл CSV на собственный сервер SFTP, необходимо написать на Python специальную функцию. Для этого можно использовать библиотеку paramiko. Paramiko - это реализация протокола SSHv2 на Python, обеспечивающая как клиентскую, так и серверную функциональность.

Установить эту библиотеку можно с помощью команды:

А сама функция у Ахмеда Али выглядит так:

Эта функция состоит из 6 параметров:

  1. df - название датафрейма со статистикой, который вы выгрузили из Facebook Ads API;
  2. filename - имя файла, загружаемое на SFTP-сервер. В нашем примере - это upload.csv (см. первую часть руководства);
  3. host - IP-адрес вашего SFTP-сервера, который вы получили при настройке (см. первую часть руководства);
  4. port - 22;
  5. username - имя пользователя SFTP-сервера, которое вы создали. В моем примере - это ga4import (см. первую часть руководства);
  6. password - пароль, который вы установили для пользователя SFTP-сервера.

Мы не будем запускать эту функцию в Colab, а сразу же перейдем к следующему этапу настройки - развертыванию в Google Cloud. Саму функцию мы  переделаем, а итоговый код я приложу в конце этого руководства. Вы сможете его скопировать и добавить в свой проект.

Настройка ежедневного задания с помощью Cloud Scheduler

Чтобы выполнять автоматический импорт данных в Google Analytics 4 без запуска кода Python в ручном режиме (как мы это делали выше в Colab), нам необходимо перенести его в Google Cloud и там настроить расписание. Это можно реализовать с помощью Cloud Scheduler и Cloud Functions.

Cloud Scheduler - это полностью управляемая бессерверная служба планирования заданий, которая позволяет пользователям планировать, автоматизировать и управлять задачами в различных службах Google Cloud.

Cloud Functions - это сервис вычислений, который позволяет разработчикам писать и развертывать код без необходимости управления инфраструктурой. Cloud Functions обрабатывают запросы и выполняют задачи в облаке в ответ на определенные события, такие как HTTP-запросы, изменения в базе данных или загрузка файлов. Это позволяет создавать масштабируемые и высокопроизводительные приложения, не беспокоясь о серверной инфраструктуре.

Задача простая - код Python, полученный на предыдущих шагах, перенести в облако, чтобы его выполнение не зависело от наших действий, чтобы он запускался автоматически, по заданному расписанию, обновлял файл upload.csv со статистикой рекламных кампаний Facebook и сразу же загружал его на SFTP-сервер, а затем Google Analytics 4 согласно нашей схеме данных и настроенному импорту с помощью открытого ключа получал доступ к этому CSV файлу и импортировал его содержимое в GA4, тем самым поддерживая актуальность данных о расходах.

Наше развертывание будет выполняться в два этапа. Первым этапом является настройка задания в Cloud Scheduler, чтобы функция загрузки статистики рекламных кампаний Facebook запускалась ежедневно в заданное время. Второй шаг - это создание самой функции в Cloud Functions.

Перейдите по ссылке в Cloud Scheduler, выбрав свой проект в Google Cloud, и создайте запуск по расписанию с помощью кнопки Schedule a job:

Cloud Scheduler - Schedule a job

Задайте своему заданию название (например, ga4-cost-import), регион (выберите тот же, что и для виртуальной машины из предыдущего руководства), а затем установите частоту (frequency) в соответствии с вашими требованиями. Если вы желаете, чтобы задание запускалось каждый день в 6 утра, используйте написание 0 6 * * * Также убедитесь, что вы выбрали правильный часовой пояс, соответствующий вашему местоположению.

Примечание: составить такую или любую другую конструкцию можно с помощью специального генератора заданий cron.

Настройки задания Cloud Scheduler

Нажмите Continue. На следующем шаге установите целевой тип вашего задания (target type) - Pub/Sub.

Target type - Pub/Sub

Если вы не можете выбрать Pub/Sub из выпадающего списка, проверьте, что у вас включен Cloud Pub/Sub API. Для этого перейдите по ссылке. Если служба неактивна, активируйте ее, нажав на кнопку Enable, а затем вернитесь обратно в Cloud Scheduler и настройте задание повторно.

Активация Cloub Pub/Sub API

В поле Select a Cloub Pub/Sub topic нажмите на Create a topic:

Создание новой темы

И создайте новую тему с названием ga4-cost-import:

Новая тема ga4-cost-import

Тело сообщения (Message body) можно оставить пустым, прописав {}. Таким образом, итоговые настройки выполнения задания будут выглядеть так:

Настройки выполнения задания

В конце нажмите кнопку Create (Создать), чтобы завершить настройку задания.

Создание задания в Cloud Scheduler

После этого вас перенаправит на страницу Cloud Scheduler, где в общем списке вы увидите свое созданное задание:

Созданное задание в общем списке Cloud Scheduler

Запуск Cloud Functions

Теперь, когда вы настроили задание в Cloud Scheduler, пришло время развернуть автоматический конвейер данных (data pipeline) в Cloud Functions.

Для этого перейдите по ссылке и нажмите на кнопку Create function (Создать функцию):

Создание функции в Cloud Functions

Для работы с Cloud Functions требуются дополнительные службы API. Поэтому если после создания функции вам высветится окно с активацией API, согласитесь с Google и нажмите Enable:

Активация API

В открывшемся окне установите для среды (Environment) значение 1st gen, а затем дайте вашей функции подходящее имя (например, ga4-cost-import). Установите тот же регион, что и для Cloud Scheduler:

Базовые настройки Cloud Functions

В разделе Trigger выберите тип триггера (Trigger type) Cloud Pub/Sub, а затем выберите тему Pub/Sub, которую вы создали ранее в Cloud Scheduler:

Настройки триггера

Нажмите SAVE. Далее раскройте раздел Runtime, build, connections and security settings и задайте следующие настройки для тайм-аута и выделенной памяти; их рекомендует автор решения Ахмед Али (Ahmed Ali):

  • Memory allocated - 1 GB
  • Timeout - 180

Настройка выделенной памяти и тайм-аута

После установки значений для этих параметров нажмите кнопку Next.

На следующем шаге в разделе Source code выберите Inline editor, а для Runtime установите Python 3.11 или Python 3.12:

Runtime - Python, Source code - Inline Editor

Внимание: по мере того, как версии и библиотеки Python будут обновляться, описанные в этом руководстве решения могут устареть или вовсе перестать работать. Тогда вам потребуется самостоятельная адаптация. Обязательно смотрите на дату этой публикации.

Теперь необходимо в правую часть окна (редактор кода) вставить итоговый код на Python:

Замените следующие строки:

  • remote_folder_path - путь к папке, где будет лежать файл upload.csv со статистикой рекламных кампаний (в моем примере -
    /home/ga4import/);
  • host - IP-адрес вашего SFTP-сервера, который вы получили при настройке (см. первую часть руководства);
  • username - имя пользователя SFTP-сервера, которое вы создали. В моем примере - это ga4import (см. первую часть руководства);
  • password - пароль, который вы установили для пользователя SFTP-сервера.
  • filename - название файла (в нашем примере upload.csv);
  • port - 22;
  • access_token - токен Facebook (см. выше);
  • account_id - идентификатор рекламного аккаунта Facebook (см. выше).

Добавив код в редактор, измените точку входа (Entry point) на main:

Entry point - main

Теперь откройте файл requirements.txt и добавьте в него библиотеки, которые вы использовали в скрипте. Это paramiko, facebook_business, pandas. Каждую библиотеку пропишите в отдельной строке.

Добавление библиотек в файл requirements.txt

Нажмите кнопку Deploy, чтобы завершить настройку:

Завершение настройки Cloud Functions

Вернитесь на страницу Cloud Functions и проверьте, чтобы после ее создания не было никаких ошибок:

Ваша созданная функция

Если вы видите зеленую галочку напротив созданной функции, значит все хорошо, и вы можете приступить к финальной отладке.

Проверка работоспособности конвейера данных

Теперь попробуйте выполнить отладку, вручную запустив облачную функцию. Для этого перейдите в Cloud Scheduler и напротив созданного задания нажмите на иконку стремя точками, а затем Force run:

Запуск задания Force run в Cloud Scheduler

Теперь вернитесь в Cloud Functions, чтобы проверить журнал выполнения задания:

Проверка журнала View logs в Cloud Functions

Это позволит вам убедиться, что функция была выполнена успешно. Если все прошло по плану, то в логах функции (LOGS) вы увидите строку с успешной загрузкой файла upload.csv на сервер:

Логи Cloud Functions - успешная загрузка файла upload.csv

Если за предыдущий день в вашем рекламном аккаунте Facebook не было статистики, то вы увидите уведомление No Facebook Ads data found.

Сообщение о том, что данных за предыдущий день в Facebook Ads не было

После этого вы можете подключиться через WinSCP под своим пользователем (см. первую часть руководства) и убедиться, что файл upload.csv действительно присутствует на сервере:

Загруженный файл upload.csv (в WinSCP)

Вы можете скачать этот файл к себе на компьютер и открыть его обычным блокнотом, Excel или программой типа Notepad++:

Статистика рекламных кампаний, автоматически загруженная на сервер

Это и есть те самые данные ваших рекламных кампаний Facebook, которые будут импортированы в Google Analytics 4 с помощью открытого ключа и созданного подключения. А благодаря настройке ежедневного задания с помощью Cloud Scheduler, Google будет автоматически обновлять статистику по заданному расписанию.

Открыв источник данных в интерфейсе GA4, вы должны увидеть успешные статусы импорта:

Сведения об источнике данных

Если вместо статуса Импортировано вы будете видеть какой-либо другой (например, Сбой), то вам следует пройтись еще раз по основным шагам из этого и предыдущего руководств.

Сбои в импорте свидетельствуют об ошибках в настройке

Когда все будет настроено правильно и передаваться автоматически, тогда вместо вашей почты в истории импорта будет фигурировать Система. Это означает, что данные передаются/обновляются по SSH ключу автоматически по заданному расписанию:

Система - это автоматический импорт по SSH ключу, заданный по расписанию

Когда данные по Facebook будут импортированы в Google Analytics 4, вы сможете увидеть статистику в стандартных отчетах Расходы вне Google (Non Google cost) или создав Исследование в свободной форме:

Отчет "Расходы вне Google (Non Google cost)"

Итоги автоматического импорта данных

Вот мы и подошли к завершению руководства по автоматическому импорту данных о расходах в Google Analytics 4, состоящего из двух частей. В первой публикации вами были выполнены подготовительные работы - создан проект в Google Cloud, создана виртуальная машина (ВМ), настроено правило брандмауэра, установлен SFTP-сервер, создан импорт данных по SFTP в интерфейсе Google Analytics 4 и получен открытый SSH-ключ. Затем в директорию созданного пользователя в /.ssh/authorized_keys вы добавили открытый SSH-ключ от GA4, а в конфиге виртуальной машины открыли доступ к соединению и по паролю, и по ключу. Все это было так или иначе связано с развертыванием сервера.

Как я упомянул ранее, в качестве своего SFTP-сервера, на который вы загружали csv файл со статистикой рекламной системы, может быть абсолютно любой сервис (Yandex Cloud, Amazon Web Services и другие) и даже обычный хостинг сайта (типа reg.ru, beget и других провайдеров), с поддержкой SSH. Используйте другое решение, если у вас нет возможности оплачивать счета в Google Cloud или если для вас цена аренда виртуальной машины Google высока. На рынке есть куда более дешевые и простые варианты для загрузки файла csv с вашей статистикой. Но поскольку данные о расходах мы импортировали именно в Google Analytics 4 (сервис компании Google), то и реализацию выполняли с использованием инфраструктуры Google.

В этом материале мы продолжили настраивать автоматический импорт данных о расходах в Google Analytics 4 и сделали следующее - создали приложение Facebook API, получили токен (маркер доступа), написали программу на Python по выгрузке статистики из рекламного кабинета Facebook, которая сохраняла данные в файл csv определенным образом (изменяла названия полей и добавляла в таблицу новые значения, чтобы они соответствовали схеме данных GA4).

После формирования файла CSV мы написали функцию, которая загружала структурированный файл на SFTP-сервер с помощью библиотеки paramiko. А чтобы все это работало без нашего участия, запускалось автоматически и обновлялось в нужное время (по расписанию), вы использовали Cloud Scheduler и Cloud Functions. В завершение мы проверили работоспособность конвейера данных, запустив функцию и проанализировав логи.

Аналогичным образом можно настроить автоматический импорт данных в Google Analytics 4 и для других рекламных систем (VK Рекламы, Яндекс Директа и других сервисов). Для этого, как вы понимаете, нужно писать новый код на Python с выгрузкой данных по API для каждого рекламного кабинета, а затем все это объединять и отправлять в один файл upload.csv, поскольку в GA4 может быть только один источник подключения типа Данные о расходах (Cost data). Не забудьте и о том, что любой токен рекламной системы имеет ограничения срока жизни, поэтому его периодически нужно обновлять (=продлевать).

С другой стороны, если вы или ваш клиент/заказчик не желает выделять деньги и средства на аренду собственного сервера и оплачивать дополнительные часы вашей работы для такой реализации, вы всегда можете воспользоваться готовыми решениями по импорту данных. Благо с каждым днем таких сервисов на рынке становится все больше и больше. Помните как мы все поголовно использовали коннекторы для передачи данных о расходах в Universal Analytics? Точно так же это применимо и для Google Analytics 4. Стоимость использования сопоставима с арендой виртуальной машины в Google Cloud, а иногда даже и дешевле. Только в случае с готовым решением настройка интуитивно понятна и выполняется через интерфейс сервиса, а если делать все самостоятельно (по этому руководству), то придется приложить много усилий для достижения поставленной цели. И не факт, что получится с первого раза. Возможно, время, которое вы затратите на выполнение всех операций, несопоставимо с тем профитом, который вы бы получили, если бы просто заплатили за коннектор для Facebook (или любой другой рекламный сервис), и спали спокойно.

Да, проблемы могут быть на любом из этапов настройки. Никто не застрахован и от того, что на стороне Google могут быть сбои и ошибки в подключении. По сообщениям моих знакомых и техподдержки сервисов, специализирующихся на трансфере данных, в последнее время наблюдались проблемы с импортом данных в Google Analytics 4, хотя до этого все работало в штатном режиме. Файл просто не принимается по ключу (ошибка подключения), а Google все время отдает статус Сбой. Поэтому фактор "баги GA4" исключать никогда нельзя. Вы можете настроить все правильно, но поскольку вы зависимы от самого Google, все равно в цепочке настроек могут быть допущены ошибки; не по вашей вине.

Но выполнить все вышеприведенные действия для автоматического импорта данных о расходах в Google Analytics 4 хотя бы раз в жизни, чтобы узнать как это настраивается, думаю, стоит. Не только с целью развития своих собственных навыков, но еще и из любопытства. Я это сделал, теперь сможете и вы!

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике