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

MD4 GoogleConnector Использование внешнего JSON‑источника (DataUrl)

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

Назначение

Позволяет загружать данные для экрана не из Google Таблиц, а из любого внешнего HTTP‑источника (REST API, статический JSON‑файл, локальный сервер). Это удобно, когда данные формируются внешней системой (ERP, CRM, биллинг) и нет необходимости дублировать их в Google Sheets.


Как это работает?

  • Вы создаёте секцию контента с типами данных type=external.
  • Указываете DataUrl – адрес, по которому отдаётся JSON.
  • Задаёте Timer – интервал обновления (для службы).
  • Все остальные секции (таблицы, текст, диаграммы, картинки) игнорируются – данные полностью замещаются внешним JSON.

Настройка

1. Секция [ExternalSource] в INI‑файле

[ExternalSource]
enable=1
type=external
DataUrl=http://192.168.1.100:8000/display_data
Timer=30
Параметр Обязательный Описание
enable да 1, true или on – включить.
type да Должен быть external.
DataUrl да Полный URL, откуда загружать JSON.
Timer нет (по умолчанию 300) Интервал обновления в секундах (для службы; в консольной утилите игнорируется).

2. Секция [Default]

Теперь SpreadsheetId не читается. Остальные параметры (ReceiverId, CredentialsPath, ApiUrl) остаются обязательными.

[Default]
SpreadsheetId=1n29pDQYxg3_OTY3IP8tbUvo9ynnBH_ii8H8-c0T-A8U ;теперь не читает
ReceiverId=d1
CredentialsPath=credentials.json
ApiUrl=http://127.0.0.1:5206

3. Секция [SwitchCover] (опционально)

Если указана, её Cover будет добавлен в итоговый запрос (перезапишет существующий).

[SwitchCover]
Cover=Statistic

Формат внешнего JSON

Сервер, на который указывает DataUrl, должен отдавать JSON в одном из трех форматов.

✅ Новый формат (рекомендуемый) – SetCoverRequest

{
  "Name": "d1",
  "Cover": "Statistic",
  "Data": [
    { "Name": "Title", "Text": "Заголовок", "widgetsTable": null },
    {
      "Name": "widgetsTable",
      "widgetsTable": [ ... ]
    },
    {
      "Name": "Widgets",
      "Text": [ ... ]
    }
  ]
}

✅ Старый формат (поддерживается)

{
  "Receivers": ["d1"],
  "Containers": [ ... ]
}

✅ Только данные (поддерживается)

{
  "Data": [
    { "Name": "Title", "Text": "Заголовок", "widgetsTable": null },
    {
      "Name": "widgetsTable",
      "widgetsTable": [ ... ]
    },
    {
      "Name": "Widgets",
      "Text": [ ... ]
    }
  ]
}

Утилита автоматически преобразует старый формат в новый, подставив Name из первого получателя, также сама конфигурация может подставить Name и Cover и преобразует формат только данные в новый полноценный.


Что происходит при запуске

  1. Консольная утилита – однократно загружает JSON и отправляет в Медиадисплей. Завершается.
  2. Служба Windows – при старте загружает JSON, затем запускает таймер с интервалом Timer и повторяет загрузку каждые N секунд. Все другие секции контента игнорируются, Google Sheets не инициализируется.

Пример полного конфигурационного файла

[Default]
SpreadsheetId=1
ReceiverId=d1
OutputFileName=Statistic_external.json
CredentialsPath=credentials.json
ApiUrl=http://127.0.0.1:5206

[SwitchCover]
;Меняет тему экрана по названию макета с сервера Медиадисплей
Cover=Statistic

[ExternalSource]
Timer=30
enable=1
type=external
DataUrl=http://192.168.1.134:5555/StatisticNoReceiver.json

Частые вопросы

❓ Как проверить, что JSON загружается правильно?

Временно добавьте в [Default] строку OutputFileName=test.json. После запуска утилиты откройте test.json – это итоговый запрос, который будет отправлен на сервер.

❓ Что делать, если JSON повреждён или сервер недоступен?

Утилита/служба выдаст ошибку с кодом:
- 4 – InvalidDataFormat (неверный JSON)
- 5 – NetworkError (сервер не отвечает)

В службе ошибка логируется, работа продолжается (по следующему таймеру будет новая попытка).

❓ Можно ли использовать DataUrl одновременно с другими секциями?

Нет. Если секция ExternalSource активна, все остальные секции контента игнорируются.


Пример для разработчиков – быстрая проверка через командную строку

MD4_GoogleConnector.exe config=Configs\statisticUrl.ini

Если в логах видите «Запуск использования внешнего JSON-файла» – значит, секция ExternalSource найдена, данные загружены.


Итог

Секция ExternalSource даёт простой и чистый способ интеграции с любым JSON‑API. Вы не зависите от Google Sheets, можете полностью контролировать формат данных и обновлять экран через внешнюю систему.