Импорт пользователей из CSV-файла
Импорт из CSV — способ завести или обновить сразу много сотрудников одним файлом, не подключая ни каталог, ни внешнюю систему. Он же самый быстрый путь к рабочему справочнику на старте: выгрузили список из кадровой системы, поправили колонки, загрузили.
Это разовая загрузка, а не синхронизация: после неё файл и UnSpot живут отдельно. Дальше — что должно быть в файле, что произойдёт с каждой строкой и где потом искать ошибки. Если вы ещё выбираете, как наполнять справочник, начните с обзора Как выбрать способ синхронизации пользователей.
Когда подходит импорт из CSV
| Подходит | Не подходит |
|---|---|
| Первичное наполнение справочника перед запуском | Постоянное поддержание справочника в актуальном состоянии |
| Разовое добавление отдела, филиала, новой группы сотрудников | Автоматическое отключение уволенных — импорт никого не архивирует |
| Массовая правка уже заведённых карточек: должности, телефоны, руководители | Перенос групп и оргструктуры целиком — группы должны существовать заранее |
| Компания без корпоративного каталога, который можно подключить | Регулярный обмен: файл придётся готовить и загружать руками каждый раз |
Что нужно до начала
- Роль «Администратор пользователей» или «Владелец»: загрузка доступна только им.
- Файл в кодировке UTF-8 — другие кодировки не поддерживаются.
- Размер файла до 5 МБ и формат именно CSV: файл другого типа диалог отклонит.
- Если в файле есть колонка «Группы» — все перечисленные группы должны быть заведены в UnSpot заранее. Импорт группы не создаёт.
- Если есть колонка «Руководитель» — руководитель должен быть уже заведён и активен. Проще всего загрузить файл дважды: первым проходом создать всех, вторым проставить руководителей. Во втором файле не оставляйте колонку «Группы» пустой — пустая ячейка стирает группы, см. раздел про ловушки.
Колонки шаблона
Шаблон скачивается прямо из окна загрузки — ссылка «Скачайте шаблон csv файла». В нём двенадцать колонок, разделитель — точка с запятой, и одна строка-пример, которую нужно заменить своими данными.
| Колонка | Что в неё писать | Обязательна |
|---|---|---|
| First name | Имя сотрудника | да |
| Last name | Фамилия | да |
| Employee Id | Табельный номер во внутренней системе учёта | нет |
| Рабочая почта. По ней сотрудник опознаётся: адрес уже есть в UnSpot — карточка обновится, нет — создастся новая | да | |
| Position | Должность. Длиннее 128 символов — строка не загрузится с ошибкой по полю Position | нет |
| Department | Путь подразделения в оргструктуре. Незнакомое значение создаёт новое подразделение | нет |
| Manager | Почта руководителя — не имя и не табельный номер | нет |
| Number Pass | Номер пропуска для СКУД | нет |
| Phone | Телефон | нет |
| Groups | Группы через запятую в одной ячейке: Отдел продаж,Москва | нет |
| Office | Название офиса, к которому приписан сотрудник — точно как в UnSpot | нет |
| Office attendance rate, % | Норма посещения офиса, число от 0 до 100. Знак процента допустим, дробное значение округляется | нет |
Порядок колонок значения не имеет — сопоставление идёт по строке заголовка. Лишние колонки просто игнорируются, а вот переименованная необязательная колонка теряется молча: заголовок не из этого списка в UnSpot не попадёт и ошибки не вызовет. С обязательными строже: если переименовать First name, Last name или Email, файл целиком отклоняется с сообщением о структуре. Заголовок первой строки лучше не трогать вовсе.
Роли в шаблоне нет. Все загруженные получают роль «Сотрудник»; выдать администраторские права через файл нельзя, только вручную в карточке.
Как загрузить файл
Путь в консоли: «Управление персоналом» → «Сотрудники», кнопка «Загрузить из CSV». Откроется окно «Импортировать пользователей». К тому же экрану ведёт карточка CSV в разделе Настройка → Интеграции → «Синхронизации» — ссылкой «Перейти к настройке».

- Скачайте шаблон и заполните его. Сохраните в UTF-8.
- Выберите разделитель — «Точка с запятой» или «Запятая». Автоопределения нет: пока разделитель не выбран, кнопка «Загрузить файл» не откроет диалог выбора, а сам выбор подсветится как обязательное поле.
- Решите, отправлять ли письмо «Добро пожаловать!» с доступом. Внимательно: выбор влияет не только на новых сотрудников — см. раздел про ловушки.
- Нажмите «Загрузить файл» и выберите свой CSV.
- Дождитесь итога. Строки уходят на сервер порциями по десять, поэтому у большого файла счётчик растёт заметными шагами.
В конце UnSpot покажет, сколько сотрудников загружено из скольких, а при ошибках — таблицу с разбором по строкам. Успешные строки при этом сохраняются: файл с ошибками загружается частично, а не отклоняется целиком.
Что происходит с каждой строкой
| Состояние по почте из строки | Что делает импорт |
|---|---|
| Такой почты в UnSpot нет | Создаётся карточка с ролью «Сотрудник». Пароль генерируется автоматически |
| Карточка есть и активна | Обновляются только те поля, колонки которых есть в файле. Отсутствующая колонка ничего не стирает |
| Карточка есть, но в архиве | Сотрудник возвращается из архива с данными из файла — в итогах он считается созданным |
| Карточка есть и деактивирована | Данные обновятся, но сама деактивация останется: импорт не включает сотрудника обратно |
Группы при обновлении заменяются, а не дополняются: что перечислено в ячейке, то у сотрудника и останется. Пустая ячейка «Группы» стирает все группы сотрудника. Если колонка есть в файле, она применяется к каждой строке — в том числе там, где ячейка пустая. Не хотите трогать группы — удалите колонку из файла целиком, а не оставляйте её незаполненной.
Ошибки: где смотреть и что они значат
Строки с ошибками собираются в таблицу из четырёх колонок: Строка, Поле, Значение, Ошибки. Такая строка целиком не загружается — исправьте её и загрузите файл ещё раз.
| Поле в таблице ошибок | Что проверяется |
|---|---|
| Адрес не похож на почтовый — или он уже встречался выше в той же порции из десяти строк. Дубликат, разнесённый по файлу дальше чем на десять строк, не отлавливается: вторая строка отработает как обновление первой | |
| First Name, Last Name | Пустое значение: и имя, и фамилия обязательны |
| Position | Длиннее 128 символов |
| Groups | Хотя бы одна группа из ячейки не найдена в UnSpot. Строка не загружается целиком, даже если остальные группы существуют |
| Manager | Руководитель с такой почтой найден, но деактивирован или в архиве. Если почты нет вовсе, ошибки не будет — см. ловушки |
| Department | Подразделение с таким путём создать не удалось |
Номер строки считается внутри порции из десяти, а не от начала файла. В файле на 30 строк ошибка одиннадцатой строки будет показана как «1». Ориентируйтесь на колонки «Поле» и «Значение» — по ним строка находится в файле поиском.
Ещё нумерация не учитывает строку заголовка: «1» — это первая строка с данными, то есть вторая строка файла.
Если ошибка одна на весь файл и текст говорит о его структуре, наиболее частые причины — те же, что подсказывает само окно: файл сохранён не в UTF-8; выбранный разделитель не тот, что в файле; набор колонок не соответствует шаблону.
Ловушки, о которых лучше знать заранее
- «Да, отправлять» меняет пароли уже заведённым сотрудникам. Приветственное письмо содержит доступ, поэтому пароль генерируется заново — в том числе тем, кто в файле просто обновляется. Обновляете существующих — выбирайте «Нет, не отправлять».
- Пустая ячейка «Офис» отвязывает сотрудника от офиса. Название, которого нет в UnSpot, или отключённый офис дают тот же результат: офис очистится, ошибки не будет.
- Подразделение из синхронизации импорт не переназначает. Если оргструктура приходит из каталога, значение в колонке «Отдел» будет молча пропущено, а сотрудник останется в прежнем подразделении.
- Незаполненная почта руководителя молча очищает руководителя. Если в колонке «Руководитель» стоит адрес, которого в UnSpot нет, — или ячейка пуста, а колонка в файле есть, — строка загрузится без ошибки, а прежний руководитель у сотрудника пропадёт.
- Опечатка в отделе создаёт новое подразделение. «Отдел продаж» и «отдел продаж» считаются одним и тем же, а «Отдел продаж и маркетинга» — уже новая ветка дерева.
- Норма посещения вне диапазона 0–100 молча обнуляется. Ошибки не будет, но ранее заданное значение сотруднику при этом сотрут.
- Поля, закрытые обновлением через SSO, импорт перезапишет, но ненадолго: при следующем входе сотрудника они вернутся к данным провайдера. Подробнее — OpenID Connect: заведение пользователей при первом входе.
- Импорт не удаляет. Кого нет в файле, тот остаётся в UnSpot нетронутым: ни архивации, ни деактивации.
Чем импорт отличается от синхронизации
| Импорт из CSV | Синхронизация с каталогом | |
|---|---|---|
| Кто запускает обмен | администратор, вручную | платформа, раз в сутки |
| Что с уволенными | ничего: карточка остаётся активной | исчезновение из выборки архивирует карточку и снимает брони |
| Группы | проставляются, но должны существовать заранее | переносятся из каталога (кроме Google Workspace) |
| Оргструктура | создаётся по строке «Отдел» | переносится деревом |
| Аватары | не переносятся | переносятся отдельным заданием |
| Совместимость | работает при любой подключённой синхронизации | одновременно подключается только одна прямая синхронизация |
Импорт и синхронизация не конфликтуют, но если каталог подключён, поля, которые он ведёт, вернутся к его значениям при ближайшем обмене. Пользоваться файлом имеет смысл для того, чего в каталоге нет, — например, для номеров пропусков или нормы посещения офиса.