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

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:
- Данные → Из Интернета → Дополнительно.
- В поле адреса вставьте запрос, например
https://YOUR_API_DOMAIN/v1/events/1/0/sub/50/live/ru. - В блоке Параметры заголовка HTTP-запроса укажите имя
Packageи значение — ваш ключ. - В редакторе Power Query разверните поле
body, затемevents_listи оставьте нужные столбцы: команды,score_full,period_name, коэффициенты. - Нажмите Закрыть и загрузить, затем в свойствах подключения включите Обновлять каждые 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 — за это время можно настроить таблицу и посмотреть, как она обновляется во время матчей.
Что сделать сегодня
- Получите тестовый ключ SportAPI.
- Вставьте скрипт в Apps Script и сохраните ключ в свойствах.
- Запустите
updateLiveвручную и проверьте лист «Live». - Включите триггеры на автообновление.
- Добавьте столбец «ID матча» в свой учёт ставок и подтяните счёт формулой.
Напишите менеджеру SportAPI в Telegram, какие виды спорта нужны в вашей таблице, — вы получите тестовый ключ к API спортивной линии и коэффициентов и настроите автообновление за один вечер.