SportAPI
Интеграция API

Live-результаты и коэффициенты в Google Таблицах: подключаем API без программирования

Как получить в Google Таблицах и Excel live-счёт, матчи дня и коэффициенты, которые обновляются сами: готовый скрипт для копирования и настройка Excel без кода.

Таблица с live-счётом матчей и коэффициентами, которая обновляется автоматически

Live-счёт, матчи дня и коэффициенты можно получать прямо в Google Таблицах — с автообновлением раз в минуту. Писать код не нужно: в таблицу вставляется готовый скрипт из этой статьи, ключ SportAPI указывается в настройках, а дальше лист обновляется сам. В Excel всё ещё проще — данные подключаются мышкой через Power Query. Источник данных — API спортивной линии SportAPI: матчи, счёт и коэффициенты по одному виду спорта от $30 в месяц, проверить можно на тестовом ключе за 2 дня.

Ниже — пошаговая настройка для Google Таблиц и Excel, готовые листы «Live» и «Матчи дня» и идея, как связать их с вашим учётом ставок.

Что получится в итоге

ЛистЧто показываетОбновление
LiveМатчи, которые идут сейчас: счёт, период, минута, коэффициенты П1 / Х / П2Каждую минуту
Матчи дняВсе матчи вида спорта до конца суток с коэффициентамиКаждые 15–30 минут
Мои ставкиВаш учёт: к каждой ставке подтягивается текущий счётФормулами, автоматически

Таблица становится рабочим местом: сравниваете коэффициенты, следите за счётом и ведёте аналитику, не переключаясь между сайтами.

Почему обычные формулы не подходят

В Google Таблицах есть функции для загрузки данных из интернета, например IMPORTDATA. Но они не умеют передавать заголовки запроса, а ключ SportAPI передаётся именно в заголовке Package — так он не попадает в адрес запроса и не светится в истории и логах. Поэтому для Google Таблиц используется встроенный инструмент Apps Script: он умеет передавать заголовки и запускаться по расписанию.

Google Таблицы: настройка за 10 минут

Шаг 1. Получите ключ SportAPI

Напишите менеджеру — тестовый ключ на 2 дня включает все виды спорта, prematch и live.

Шаг 2. Откройте Apps Script

В таблице выберите Расширения → Apps Script. Откроется редактор: удалите в нём всё и вставьте скрипт из шага 3.

Шаг 3. Вставьте готовый скрипт

const API = 'https://YOUR_API_DOMAIN/v1';
const SPORT_ID = 1; // 1 — футбол; ID других видов спорта есть в методе menu

function fetchMatches(path) {
  const key = PropertiesService.getScriptProperties().getProperty('SPORTAPI_KEY');
  const response = UrlFetchApp.fetch(API + path, {
    headers: { Package: key },
    muteHttpExceptions: true,
  });
  if (response.getResponseCode() !== 200) return null;
  return JSON.parse(response.getContentText()).body;
}

function mainOdds(match) {
  const odds = {};
  (match.game_oc_list || [])
    .filter((group) => group.group_name.toLowerCase() === '1x2') // в live группа называется 1X2
    .forEach((group) => group.oc_list.forEach((o) => (odds[o.oc_name] = o.oc_rate)));
  return [odds['П1'] || '', odds['Ничья'] || '', odds['П2'] || ''];
}

function writeSheet(name, rows) {
  const book = SpreadsheetApp.getActive();
  const sheet = book.getSheetByName(name) || book.insertSheet(name);
  sheet.clearContents();
  sheet.getRange('A:Z').setNumberFormat('@'); // чтобы счёт 2:1 не превратился во время
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
}

function updateLive() {
  const body = fetchMatches(`/events/${SPORT_ID}/0/sub/50/live/ru`);
  if (!body) return;
  const rows = [['ID матча', 'Турнир', 'Хозяева', 'Гости', 'Счёт', 'Период', 'Минута', 'П1', 'Х', 'П2', 'Обновлено']];
  const now = new Date().toLocaleTimeString('ru-RU');
  body.forEach((tournament) => tournament.events_list.forEach((match) => rows.push([
    String(match.game_id), tournament.tournament_name, match.opp_1_name, match.opp_2_name,
    match.score_full, match.period_name, String(Math.floor(match.timer / 60)),
    ...mainOdds(match).map(String), now,
  ])));
  writeSheet('Live', rows);
}

function updateToday() {
  const body = fetchMatches(`/events/${SPORT_ID}/0/sub/50/line/0/0/ru`);
  if (!body) return;
  const rows = [['ID матча', 'Начало', 'Турнир', 'Хозяева', 'Гости', 'П1', 'Х', 'П2']];
  body.forEach((tournament) => tournament.events_list.forEach((match) => rows.push([
    String(match.game_id),
    new Date(match.game_start * 1000).toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit' }),
    tournament.tournament_name, match.opp_1_name, match.opp_2_name, ...mainOdds(match).map(String),
  ])));
  writeSheet('Матчи дня', rows);
}

Скрипт создаёт два листа: «Live» с матчами, которые идут сейчас, и «Матчи дня» со всеми матчами до конца суток из календаря матчей.

Шаг 4. Сохраните ключ в настройках, а не в коде

В редакторе откройте Настройки проекта → Свойства скрипта и добавьте свойство SPORTAPI_KEY со своим ключом. Так ключ не виден людям, с которыми вы делитесь таблицей.

Шаг 5. Включите автообновление

Откройте Триггеры → Добавить триггер:

  • функция updateLive, источник «По времени», «Таймер по минутам», каждую минуту;
  • функция updateToday, «Таймер по минутам», каждые 15 или 30 минут.

При первом запуске Google попросит разрешить скрипту доступ к таблице и внешним запросам — подтвердите. Через минуту лист «Live» заполнится и дальше будет обновляться сам.

Excel: подключение без единой строки кода

В Excel ключ в заголовке задаётся прямо в интерфейсе Power Query:

  1. Данные → Из Интернета → Дополнительно.
  2. В поле адреса вставьте запрос, например https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/live/ru.
  3. В блоке Параметры заголовка HTTP-запроса укажите имя Package и значение — ваш ключ.
  4. В редакторе Power Query разверните поле body, затем events_list и оставьте нужные столбцы: команды, score_full, period_name, коэффициенты.
  5. Нажмите Закрыть и загрузить, затем в свойствах подключения включите Обновлять каждые 1 мин.

Готово: таблица Excel обновляется сама, пока файл открыт.

Идея для аналитики: история коэффициентов

Лист «Матчи дня» каждый раз перезаписывается. Если вы хотите видеть, как менялись коэффициенты, добавьте ещё одну функцию, которая раз в час копирует текущие значения в конец листа «История» с отметкой времени. Через неделю у вас будет собственная история движения линии: можно строить графики, сравнивать коэффициенты на открытии и перед матчем и проверять свои ставки на дистанции.

Как связать с учётом ставок

Если вы ведёте учёт ставок в таблице, добавьте в него столбец «ID матча» — его можно скопировать с листа «Live» или «Матчи дня». Тогда текущий счёт подтягивается формулой:

=ЕСЛИОШИБКА(ВПР(A2; Live!A:E; 5; ЛОЖЬ); "матч не идёт")

Где A2 — ID матча в вашем учёте, а 5 — номер столбца «Счёт» на листе «Live». Так в одном месте видно ставку, коэффициент, по которому вы её сделали, и счёт в реальном времени.

Ошибки, которые ломают таблицу

  • Ключ в коде скрипта. Любой, у кого есть доступ к таблице, его увидит. Храните ключ в свойствах скрипта.
  • Обновление чаще раза в минуту. Триггеры Google Таблиц и так не запускаются чаще, а для таблицы это не нужно.
  • Счёт превращается во время. Таблица может прочитать «2:1» как 02:01. Скрипт из статьи задаёт листам текстовый формат.
  • Слишком много видов спорта на одном листе. Делайте отдельный лист для каждого вида спорта — так таблица работает быстрее.
  • ID матча как число. Храните его текстом, чтобы формулы поиска работали без ошибок.

Сколько стоит

Что нужноСтоимость
Матчи, счёт, prematch и live, коэффициенты, краткая live-статистика по одному виду спортаот $30 в месяц
Google Таблицы или ExcelВаш обычный аккаунт
Проверка до оплатыТестовый ключ SportAPI на 2 дня, все виды спорта

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

Нужно ли уметь программировать?

Нет. Для Google Таблиц достаточно скопировать готовый скрипт и включить триггер, для Excel — заполнить поля в Power Query. Менять код нужно, только если хотите другие столбцы или вид спорта.

Как часто обновляются данные?

В Google Таблицах — не чаще раза в минуту, это ограничение триггеров. В Excel — тоже от одной минуты, пока файл открыт. Для учёта и аналитики этого достаточно.

Можно ли вывести другие виды спорта?

Да. Замените SPORT_ID на ID нужного вида спорта из метода menu — например, хоккея, тенниса или баскетбола. Для каждого вида спорта удобно сделать отдельный лист.

Можно ли получить все рынки матча, а не только П1 / Х / П2?

Да, через метод event с полным набором рынков. Но для таблицы обычно хватает основных коэффициентов из списка матчей — так лист остаётся читаемым. Подробности — в документации метода events.

Можно ли проверить до оплаты?

Да. Тестовый ключ на 2 дня включает все виды спорта, prematch и live — за это время можно настроить таблицу и посмотреть, как она обновляется во время матчей.

Что сделать сегодня

  1. Получите тестовый ключ SportAPI.
  2. Вставьте скрипт в Apps Script и сохраните ключ в свойствах.
  3. Запустите updateLive вручную и проверьте лист «Live».
  4. Включите триггеры на автообновление.
  5. Добавьте столбец «ID матча» в свой учёт ставок и подтяните счёт формулой.

Напишите менеджеру SportAPI в Telegram, какие виды спорта нужны в вашей таблице, — вы получите тестовый ключ к API спортивной линии и коэффициентов и настроите автообновление за один вечер.

← Все статьи