api de odds da pinnacle / google sheets / apps script
API de odds da Pinnacle no Google Sheets
loop[a cada 15 minutos, 96 chamadas por dia]
GET/kit/v1/markets?event_type=prematch&sport_id=1
linhas gravadas na aba Odds200 OK
Um Apps Script curto chama a API de odds da Pinnacle para o painel pré-jogo de futebol e escreve uma linha por partida: horário, liga, times e os preços 1X2. Um gatilho de tempo o reexecuta a cada 15 minutos, o que dá 96 chamadas por dia e cabe em uma chave gratuita.
Criar uma chave gratuitaUS$ 0 · 100 chamadas por dia · sem cartão
| Linha | A | B | C | D | E | F | G |
|---|---|---|---|---|---|---|---|
| 1 | Início | Liga | Início | Fora | 1 | X | 2 |
| 2 | 4 mai 16:30 | Itália - Serie A | Cremonese | Lazio | 2.45 | 3.30 | 2.90 |
| 3 | uma linha para cada partida do quadro pré-jogo | ||||||
O script
Ele lê sua URL base e sua chave das propriedades do script, então nenhuma delas fica no código. Ele pede event_type=prematch e sport_id=1, futebol, e depois achata a money line da partida completa de cada evento nas colunas E a G.
Uma chamada com falha não grava nada e registra a resposta, então um minuto ruim nunca apaga a aba. Troque SPORT_ID para outro esporte; os IDs estão na página inicial.
// Extensions > Apps Script, then paste.
const PROPS = PropertiesService
.getScriptProperties();
const BASE = PROPS.getProperty('BASE');
const KEY = PROPS.getProperty('KEY');
const SPORT_ID = 1; // 1 = soccer
function refreshOdds() {
const url = BASE + '/kit/v1/markets' +
'?event_type=prematch&sport_id=' +
SPORT_ID;
const res = UrlFetchApp.fetch(url, {
headers: { 'x-portal-apikey': KEY },
muteHttpExceptions: true,
});
if (res.getResponseCode() !== 200) {
console.warn(res.getContentText());
return;
}
const data = JSON.parse(
res.getContentText());
const rows = data.events.map((ev) => {
const p = ev.periods || {};
const ml = (p.num_0 || {})
.money_line || {};
return [new Date(ev.starts),
ev.league_name, ev.home, ev.away,
ml.home || '', ml.draw || '',
ml.away || ''];
});
const sheet = SpreadsheetApp
.getActive().getSheetByName('Odds');
sheet.clearContents();
sheet.appendRow(['Starts', 'League',
'Home', 'Away', '1', 'X', '2']);
if (rows.length) {
sheet.getRange(2, 1, rows.length, 7)
.setValues(rows);
}
}
Selecione o código para copiá-lo.
configure uma vez
Cinco passos, depois ele roda sozinho
- Adicione uma aba chamada
Oddsà sua planilha. - Abra Extensões, depois Apps Script, e cole o script sobre a função vazia.
- Em Configurações do projeto, adicione duas propriedades de script:
BASE, o endereço da API da documentação, eKEY, sua chave. - Execute
refreshOddsuma vez e conceda as permissões que o Google pedir. - Em Acionadores, adicione um acionador por tempo para
refreshOddscom timer de 15 minutos.
Quanto um acionador custa do limite diário.
| Acionador | Chamadas por dia | Plano |
|---|---|---|
| A cada 15 minutos, um esporte | 96 | Chave gratuita |
| A cada 30 minutos, dois esportes | 96 | Chave gratuita |
| A cada 15 minutos, dois esportes | 192 | poll |
| A cada minuto, um esporte | 1,440 | poll |
As cotas do próprio Apps Script se aplicam por cima; o acionador por tempo mais curto é de um minuto.
PRÓXIMOrefreshOdds()
Uma chave, uma aba, um acionador
A chave gratuita cobre uma planilha de 15 minutos para um esporte. Se a planilha virar um modelo que precisa de todos os esportes a cada minuto, as 10 chamadas por segundo do poll são o próximo passo; a página de preços tem os números.