Интеграция 1С-Битрикс с Google Looker Studio
Google Looker Studio (бывший Google Data Studio) — инструмент визуализации данных, который строит дашборды из различных источников. Данные из Битрикс можно передать в Looker Studio тремя способами: через Google Sheets как промежуточный слой, через BigQuery или через кастомный коннектор. Выбор зависит от объёма данных и частоты обновления.
Архитектура передачи данных
Схема 1 — через Google Sheets (для небольших объёмов):
Битрикс → PHP-агент → Google Sheets API → Looker Studio
Подходит для 5 000–50 000 строк, обновление раз в несколько часов. Самый быстрый путь к дашборду без сложной инфраструктуры.
Схема 2 — через BigQuery (для больших объёмов):
Битрикс → PHP-агент → BigQuery API → Looker Studio
BigQuery оптимален при миллионах строк (история заказов за несколько лет, события поведенческой аналитики). Looker Studio имеет нативный коннектор к BigQuery.
Схема 3 — кастомный коннектор Looker Studio:
Looker Studio → REST API Битрикс → Looker Studio
Looker Studio по расписанию запрашивает данные напрямую из API. Не требует промежуточных хранилищ, но нагружает сервер Битрикс при частых запросах.
Реализация через Google Sheets
Наиболее практичный вариант для e-commerce проектов. Google Sheets API принимает данные через OAuth 2.0 сервисный аккаунт.
Шаг 1. Создаём сервисный аккаунт в Google Cloud Console, скачиваем JSON с ключами, выдаём доступ к нужной таблице.
Шаг 2. Устанавливаем библиотеку через Composer или подключаем вручную:
composer require google/apiclient
Шаг 3. Агент Битрикс собирает данные и отправляет в Sheets:
function syncOrdersToSheetsAgent(): string
{
$ordersData = collectOrdersData(); // массив данных из b_sale_order
updateGoogleSheet(SHEETS_SPREADSHEET_ID, 'Заказы!A1', $ordersData);
return __FUNCTION__ . '();';
}
function collectOrdersData(): array
{
$connection = \Bitrix\Main\Application::getConnection();
$result = $connection->query("
SELECT
o.ID,
o.DATE_INSERT,
o.PRICE,
o.CURRENCY,
o.STATUS_ID,
o.USER_ID,
u.LOGIN,
u.EMAIL
FROM b_sale_order o
LEFT JOIN b_user u ON u.ID = o.USER_ID
WHERE o.DATE_INSERT >= DATE_SUB(NOW(), INTERVAL 90 DAY)
ORDER BY o.DATE_INSERT DESC
LIMIT 10000
");
$rows = [['ID', 'Дата', 'Сумма', 'Валюта', 'Статус', 'ID клиента', 'Логин', 'Email']];
while ($row = $result->fetch()) {
$rows[] = array_values($row);
}
return $rows;
}
function updateGoogleSheet(string $spreadsheetId, string $range, array $data): void
{
$client = new \Google\Client();
$client->setAuthConfig(APPLICATION_ROOT . '/local/config/google-service-account.json');
$client->addScope(\Google\Service\Sheets::SPREADSHEETS);
$service = new \Google\Service\Sheets($client);
$body = new \Google\Service\Sheets\ValueRange(['values' => $data]);
$params = ['valueInputOption' => 'USER_ENTERED'];
$service->spreadsheets_values->update($spreadsheetId, $range, $body, $params);
}
Структура данных для типичных дашбордов
Для e-commerce дашборда в Looker Studio обычно нужны следующие листы в Google Sheets:
| Лист | Источник в Битрикс | Таблицы |
|---|---|---|
| Заказы | Список заказов с суммами | b_sale_order |
| Товары в заказах | Состав заказов | b_sale_basket |
| Клиенты | Данные покупателей | b_user, b_sale_order |
| Источники трафика | UTM-метки | b_sale_order (поле REASON_MARKED) |
| Отмены и возвраты | Статусы заказов | b_sale_order, b_sale_status |
Для CRM-дашборда:
| Лист | Источник | Таблицы |
|---|---|---|
| Сделки | CRM сделки | b_crm_deal |
| Воронка | Стадии сделок | b_crm_deal, b_crm_status |
| Активности | Звонки, письма | b_crm_activity |
Настройка Looker Studio
- Откройте
lookerstudio.google.com→ создайте источник данных - Выберите коннектор Google Sheets
- Укажите таблицу и лист с данными Битрикс
- Looker Studio определит типы столбцов: числа, текст, даты
- Создайте отчёт с нужными диаграммами
Важные настройки в Looker Studio:
- Поле даты (
DATE_INSERT) должно иметь тип «Дата и время» — Looker Studio автоматически определит, если форматYYYY-MM-DD HH:MM:SS - Поле суммы (
PRICE) — тип «Число», формат «Валюта» - Для агрегации по периодам добавьте вычисляемое поле
DATE_TRUNC(DATE_INSERT, MONTH)
Автоматическое обновление данных
Агент Битрикс запускается по расписанию:
// Регистрация агента в init.php или установке модуля
\CAgent::AddAgent(
'syncOrdersToSheetsAgent();',
'my_analytics',
'N',
3600, // каждый час
'',
'Y',
\ConvertTimeStamp(time() + 3600, 'FULL')
);
При обновлении инкрементально (только новые данные) добавьте в запрос WHERE o.DATE_INSERT >= ? с датой последней синхронизации, сохраняемой в b_option.
Безопасность
JSON-ключ сервисного аккаунта — конфиденциальный файл. Хранить в /local/config/ с запретом на HTTP-доступ через .htaccess:
<Files "google-service-account.json">
Deny from all
</Files>
В Google Cloud Console ограничьте права сервисного аккаунта: только roles/sheets.editor на конкретную таблицу, не на весь проект.
Сроки реализации
| Вариант | Состав | Срок |
|---|---|---|
| Один лист (заказы за 90 дней) | Агент + Sheets API + базовый дашборд | 1–2 дня |
| Полный e-commerce дашборд (5–7 листов) | Несколько агентов + трансформация данных | 3–5 дней |
| Исторические данные + BigQuery | Первоначальная загрузка + инкрементальный sync | 1–2 недели |







