# Google Таблицы: как работает коннектор

В этой статье вы узнаете, как коннектор Google Таблицы синхронизирует данные с хранилищем ROMI center: какие таблицы он создаёт, с какой периодичностью и откуда берутся имена и типы колонок. Поля этого коннектора не описываются отдельной статьёй — колонки таблицы всегда те же, что и в вашем листе.

> **Примечание**
> Здесь описана новая форма подключения — с выбором нескольких листов файла, которую с 7 сентября 2026 года создаёт мастер подключения в кабинете. Подключения старой формы с одним листом здесь не рассматриваются, как и отдельный коннектор расходов из Google Sheets.

## Что выгружается: таблица на каждый лист

Подключение — это один файл Google Таблиц по ссылке. На шаге «Доступ» в нём отмечаются листы, и каждый отмеченный лист выгружается в свою таблицу хранилища. Первая строка листа становится названиями колонок, остальные — строками таблицы; полностью пустая строка пропускается.

> **Важно**
> Таблица — точный снимок листа. При каждой синхронизации лист читается целиком, и таблица собирается заново: удалённые в листе строки из неё пропадают, исправленные — меняются. Истории изменений нет.

Коннектор файл только читает. Имя таблицы — `gsc_<название листа латиницей>_<id подключения>`; фиксируется, когда лист добавлен, переименование листа меняет только подпись. Слова `reklama` и `ads` в имени заменяются на `rkl` — их режут блокировщики рекламы.

## Периодичность

Все включённые листы синхронизируются каждые 3 часа (в 00:00, 03:00, 06:00 и так далее), задание на лист. Первая выгрузка нового листа идёт сразу после сохранения подключения.

> **Примечание**
> Синхронизации Google Таблиц идут по одной за раз на всю систему. Синхронизация пропускается, если истекла лицензия проекта, у подключения ошибка доступа к Google-аккаунту, хранилище в ошибке доступа или нажато «Приостановить выгрузку» — когда причина уходит, следующая синхронизация снова забирает листы целиком, так что пропуск ничего не теряет.

## Как сохраняет данные

*   **Куда:** хранилище ROMI center на движке ClickHouse (поддерживается также хранилище на PostgreSQL).
*   **Пересборка без пустого окна.** Лист записывается во временную таблицу, и та меняется местами с рабочей — запрос во время синхронизации видит либо старую версию таблицы, либо новую, но никогда не пустую и не половину.
*   **Структура:** движок `MergeTree`, без разбиения на партиции и без ключа сортировки.
*   **Колонки сопоставляются по заголовку, а не по позиции:** вставка или перестановка столбцов в листе значения не сдвигает.

## Что будет, если поменять файл в Google

| Что поменяли | Что будет в хранилище |
| --- | --- |
| Добавили колонку | Сама в таблицу не попадёт — её нужно отметить на шаге «Выбор полей». |
| Удалили колонку | Колонка остаётся и заполняется пустыми значениями, пока её не снимут на шаге «Выбор полей». |
| Переименовали заголовок колонки | Для коннектора это удаление старой колонки и появление новой: старая опустеет, новую нужно отметить. |
| Переименовали лист | Меняется только подпись, имя таблицы прежнее. |
| Удалили лист | Синхронизация останавливается с ошибкой «Лист больше не найден в файле», таблица остаётся с последними данными. Уберите лист на шаге «Доступ». |
| Очистили первую строку | Синхронизация листа падает, таблица остаётся с последними данными. |
| Закрыли доступ к файлу или удалили его | Ошибка «Файл недоступен». Синхронизация возобновится сама, когда доступ или файл вернут. |

## Перезагрузка данных

Функция «Загрузить исторические данные» в меню подключения не зависит от выбранного периода: все включённые листы сразу перечитываются целиком — это внеочередная синхронизация, она работает и на паузе.

> **Примечание**
> Галочка «Удалить ранее загруженные данные за период» у этого коннектора ничего не удаляет отдельно — таблица и так каждый раз заменяется целиком. Подсказка про режим «По добавлению строк» относится к старой форме подключения.

## Дополнительные настройки

| Настройка | Что делает |
| --- | --- |
| Google-аккаунт | Шаг «Доступ»: вход через Google. У аккаунта должен быть доступ к файлу. |
| Ссылка на файл | Шаг «Доступ»: ссылка на файл или его id. После создания подключения не меняется. |
| Листы таблицы | Шаг «Доступ»: какие листы выгружать. Снятый лист при сохранении сразу удаляет свою таблицу из хранилища. |
| Таблицы, колонки и типы | Шаг «Выбор полей»: карточка на каждый лист — включить или выключить таблицу, отметить колонки, задать тип каждой. Выключенная таблица остаётся в хранилище с последними данными и больше не обновляется. |

## Имена колонок

| Заголовок в листе | Колонка в таблице |
| --- | --- |
| Текст | Транслитерация в нижнем регистре: «Дата» → `data`, «Кампания» → `kampaniya`. Пробел становится `_`, дефис, точка и запятая выбрасываются. |
| Пустой | `column_<номер столбца>`. |
| `id` или начинается с `rc_` | С префиксом `f_`: `id` → `f_id`. |
| Повторяется | Суффикс `_2`, `_3` по порядку столбцов. |

## Типы колонок

На шаге «Выбор полей» у каждой колонки выбирается тип. По умолчанию стоит «Авто» — тип оценивается по первой 1000 строк листа.

| Тип в визарде | Тип поля | Как пишется значение |
| --- | --- | --- |
| Строка | Строка | как показано в ячейке |
| Целое число | Целое число | число без дробной части; дробное число в такой колонке — пусто |
| Дробное число | Дробное число | число |
| Дата | Дата | дата; значение со временем — пусто |
| Дата и время | Дата и время | дата и время; дата без времени — полночь |
| Авто | один из пяти выше | тип выбирается по значениям при каждой синхронизации |

Логического типа нет: «да» и «нет» остаются строкой.

> **Важно**
> Числа: пробелы, знаки валют (₽, $, €, ₴, ₸, £, ¥, руб., р.) и % отбрасываются — «1 234,50 ₽» станет 1234.5, «12%» — 12. Запятая — десятичный разделитель, а в файлах с английской локалью — разделитель тысяч; если есть и точка, и запятая, дробный тот, что правее.

> **Важно**
> Двузначный год в дате читается как год нашей эры: `20.09.26` ложится в хранилище как `1900-01-01` — самая ранняя дата, которую хранит колонка. Год в листе нужно писать четырьмя цифрами.

> **Важно**
> «Авто» выбирает первый тип из ряда «целое → дробное → дата → дата и время», под который подходят все непустые значения колонки, иначе — строка. Одно значение не по формату — и вся колонка становится строкой (на бою сумма заказа определилась строкой из-за трёх ячеек с прочерком «-»). Тип пересчитывается при каждой синхронизации по всему листу: появилось в числовой колонке слово — со следующей синхронизации колонка станет строкой. Если тип важен для отчётов, задайте его явно — тогда значение не по формату станет пустым, а тип не изменится.
