ТЕХНИЧЕСКАЯ ДОКУМЕНТАЦИЯ

MD4 GoogleConnector Обновления контента из Гугл Таблиц (Служба Windows)

> Медиадисплей > Интеграции > Интеграция с Google
Дата обновления: 23 июня 2026 г. Дата публикации: 3 июня 2026 г. Автор: Жапов Ананда

О службе

MD4_ContentService (MediaDisplayContentService) – это Windows-служба для автоматического обновления медиа-контента на экранах через сервер Медиадисплей. Она входит в состав решения MD4_GoogleConnector и предназначена для фоновой работы. Служба периодически загружает данные из Google Таблиц (или внешнего JSON-источника) и отправляет их на сервер по протоколу SetCover.

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


Основные характеристики

  • Фоновая работа – служба запускается автоматически при старте Windows.
  • Гибкое обновление – каждый элемент контента (текст, таблица, диаграмма, виджет) имеет свой таймер, задаваемый в конфигурации.
  • Поддержка Google Sheets – чтение данных по source или ListRange с автоподстановкой текущего месяца ([month]).
  • Внешний JSON-источник – можно указать DataUrl для загрузки готового JSON (например, с удалённого сервера).
  • Смена макета – секция [SwitchCover] переключает экран на нужный макет перед отправкой данных.
  • Собственный журнал событий – записи пишутся в MediaDisplayContentService.
  • Простая установка/удаление – через установщик или бат-файл ServiceInstall.bat (оба требуют прав администратора).

Установка и настройка

Требования

  • Операционная система: Windows 7 / Server 2008 R2 и новее (x64)
  • .NET Framework 4.8 (или выше)
  • Сервер Медиадисплей – должен быть доступен по сети
  • Google Sheets API (если используются данные из таблиц) – необходимо получить credentials.json
  • Права администратора для установки службы

Подготовка

  1. Скомпилируйте проект в Visual Studio (конфигурация Debug). Исполняемый файл MD4_ContentService.exe появится в bin\Debug\.
  2. Получите credentials.json для доступа к Google Sheets API (см. документацию утилиты MD4_GoogleConnector).
  3. Поместите конфигурационные INI-файлы в папку ..\MD4_GoogleConnector\Configs\ относительно рабочей папки службы (см. структуру проекта ниже).
  4. Настройте конфигурационный INI-файл (например, menu.ini). Примеры смотрите в разделе Конфигурационные файлы.

Установка службы

  1. Для начала запустите установщик setup-md4-googleconnector_1.0.0.0.exe и поставьте галочку Установить службу обновления медиа-контента
  2. Выберите конфигурации службы из списка.
  3. Нажмите на кнопку Установить.
  4. Служба будет установлена с именем MediaDisplayContentService.
  5. Отображаемое имя: «RBSOFT:Служба обновления медиа-контента».
  6. Тип запуска: Автоматически.
  7. Остановите службу:
  8. Нажмите Win+R, откройте services.msc.
  9. Найдите «RBSOFT:Служба обновления медиа-контента».
  10. Нажмите «Остановить».
  11. Получите credentials.json из Google Cloud Console.
  12. Поместите его в папку установки: C:\Program Files (x86)\RBSOFT\MD4_GoogleConnector\.
  13. Запустите службу

Удаление службы

Способ 1 (Полное удаление):

  1. Откройте Панель управления → Программы и компоненты.
  2. Найдите MD4_GoogleConnector и нажмите «Удалить».
  3. При удалении служба и журнал событий удаляются автоматически.

Способ 2 (Вручную):

  1. Остановите службу через services.msc.
  2. Запустите ServiceInstall.bat от администратора.
  3. Выберите 2 – Удалить службу.

Структура проекта

Проект службы MediaDisplayContentService обычно располагается в одной рабочей области с утилитой MD4_GoogleConnector. Ожидаемая структура папок:

MD4_GoogleConnector/               # Утилита и служба для работы с Google Sheets
├── Configs/                       # INI-файлы конфигураций
│   ├── flight.ini
│   ├── menu.ini
│   └── ...
├── Log/                           # Логи работы с утилиты/службы
│   └── ServiceInstall.log
│   └── MD4_GoogleConnector.log
├── credentials.json               # Учётные данные Google API (добавляется пользователем)
├── MD4_ContentService.exe         # Исполняемый файл службы
├── MD4_GoogleConnector.exe        # Исполняемый файл утилиты
├── MD4_GoogleConnector.bat        # Запускатель утилиты
├── ServiceInstall.bat             # Установщик/удалитель службы
├── install_eventlog.bat           # Создание журнала событий
└── ...

Конфигурационные файлы

Служба использует те же INI-файлы, что и консольная утилита MD4_GoogleConnector. Формат полностью совместим.

Секция [Default]

Обязательная секция с основными параметрами:

[Default]
SpreadsheetId=1n29pDQYxg3_OTY3IP8tbUvo9ynnBH_ii8H8-c0T-A8U
ReceiverId=d1
CredentialsPath=credentials.json
ApiUrl=http://127.0.0.1:5206
  • SpreadsheetId – идентификатор Google-таблицы (если используется Sheets).
  • ReceiverId – имя приёмника на сервере Медиадисплей (например d1).
  • CredentialsPath – путь к файлу credentials.json.
  • ApiUrl – адрес сервера Медиадисплей.
  • OutputFileName (необязательно) – если указан, служба будет сохранять отправленный JSON в файл (для отладки).

Секция [SwitchCover]

Переключает макет экрана перед отправкой данных:

[SwitchCover]
Cover=MenuBoard
  • Cover – имя макета (темы) на сервере Медиадисплей.

Секции контента

Каждая секция описывает один элемент на экране. Доступные параметры:

Параметр Описание
enable Включить секцию: 1, true, on – да; 0, false, off – нет.
type Тип: text, widgettext, table, chart, image, video.
name Имя контейнера в макете (должно совпадать с именем виджета на экране).
Timer Интервал обновления в секундах.
source Адрес ячейки в Google Sheets (например, Лист!A1).
value Статическое значение (альтернатива source).
ListRange Диапазон для таблиц или диаграмм (например, Лист!A1:C10).
columns Заголовки столбцов таблицы (через запятую).
charttype Тип диаграммы (для type=chart).

Подстановка текущего месяца

В ListRange и source можно использовать плейсхолдер [month], который автоматически заменяется номером текущего месяца (1–12). Например:

ListRange=[month]!W3:Z29    → 6!W3:Z29 в июне

Также доступны [monthName] (русское название) и [monthEN] (английское).

Примеры секций

Текст (отдельный контейнер):

[Title]
Timer=180
enable=true
type=text
name=Title
source=Лист!A1

Таблица (помещается в контейнер widgetsTable):

[Table1]
Timer=10
enable=1
type=table
name=Table
ListRange=Лист!A2:C10
columns=col1,col2,col3

Диаграмма (помещается в контейнер Charts):

[Chart1]
Timer=60
enable=1
type=chart
charttype=line
name=chart1
ListRange=Лист!D1:F10

Изображение (помещается в контейнер Widgets):

[Logo]
Timer=300
enable=1
type=image
name=Logo
source=Лист!G1

Видео (аналогично изображению, тип type=video).

Режим внешнего источника

Если в конфиге есть секция [ExternalSource]:

[ExternalSource]
Timer=60
enable=1
type=external
DataUrl=http://192.168.1.100:8000/data.json

утилита загрузит данные по указанному URL и отправит их, проигнорировав все остальные секции.


Таймеры для отдельных секций

Каждая секция контента имеет свой Timer. Служба создаёт отдельный таймер для каждой секции, поэтому даже при большом количестве элементов обновление происходит независимо.


Следующий шаг: Если вы хотите создать свой первый экран с нуля, изучите Пошаговую инструкцию работы с MD4_GoogleConnector – там показан полный цикл: от проектирования макета до запуска службы.