Notas de quickstart
Lista caídas recientes en Google Sheets sin el stream
El endpoint de caídas responde en un GET simple: una hoja en un disparador de 15 minutos registra cada movimiento, sin proceso siempre encendido.
El stream de caídas necesita un plan que empuja alertas, pero el endpoint de caídas no: responde a la misma detección con un GET simple, lo que significa que una hoja de Google puede listar las caídas recientes en un horario, con las herramientas que ya tienes. Quince minutos de Apps Script y la hoja se lee como un feed de movimientos.
El endpoint es un GET, nada queda abierto
El endpoint de caídas devuelve los movimientos que el feed detectó en los últimos minutos como JSON puro, como lo documenta el quickstart de curl, verificado el 2026-11-04. Tres parámetros moldean la respuesta: mode elige en vivo o prepartido, min_drop_pct el tamaño del movimiento, y max_age_sec la ventana. Sin stream, sin bucle de reconexión, sin proceso siempre encendido.
Esa forma es exactamente lo que un disparador de hoja puede ejecutar. Una función en un temporizador de 15 minutos pregunta por los últimos 15 minutos y anexa lo que encuentra.
La versión en Apps Script
La misma llamada UrlFetchApp que usa el quickstart de Sheets, con otro endpoint:
function fetchDrops() {
const PROPS = PropertiesService.getScriptProperties();
const BASE = PROPS.getProperty('BASE');
const KEY = PROPS.getProperty('KEY');
const url = BASE + '/api/drops?mode=prematch&min_drop_pct=5&max_age_sec=900';
const res = UrlFetchApp.fetch(url, {
headers: { 'x-portal-apikey': KEY },
muteHttpExceptions: true,
});
if (res.getResponseCode() !== 200) {
console.warn(res.getContentText());
return;
}
const drops = JSON.parse(res.getContentText()).drops || [];
if (!drops.length) return;
const sheet = SpreadsheetApp.getActive().getSheetByName('Drops')
|| SpreadsheetApp.getActive().insertSheet('Drops');
const rows = drops.map((d) =>
[new Date(), d.sport_name, d.market, d.side, d.from, d.to, d.drop_pct]);
sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, 7).setValues(rows);
}
Apunta un disparador de 15 minutos a ella, como el quickstart de Sheets define el suyo, verificado el 2026-11-04. Una llamada por ejecución son 96 llamadas al día, dentro del presupuesto diario de la clave gratuita.
Lee los campos a la manera del endpoint
Los nombres de campo del endpoint difieren de los del stream: from y to en lugar de from_price y to_price, market y side en lugar de sect y outcome. El porcentaje viene listo como drop_pct, así que la hoja no necesita aritmética. Si algún día mezclas filas del endpoint con alertas del stream en un mismo registro, mapea los nombres una vez, deliberadamente, o el mismo movimiento se leerá como dos objetos distintos.
Para qué sirve la hoja
Una pestaña Drops es una herramienta de revisión: los movimientos de ayer, ordenados por tamaño, con la cuota justa al lado si añades nvp a la fila. Es la versión tranquila de un canal de chat, mejor para aprender lo que tus deportes realmente hacen todo el día.
Lo que no es es rápida. Una hoja de 15 minutos ve un movimiento de hace 15 minutos. Cuando necesites el movimiento al momento, ese es el trabajo del stream; la hoja es para el registro.
El disparador, luego el hábito
El último paso es la misma disciplina de los otros quickstarts: el disparador corre mires o no, así que revisa la pestaña en una rutina de mañana y deja que las filas se acumulen. Una semana de caídas registradas enseña la tasa real de movimientos de tus deportes, que es el número en el que toda decisión de umbral después se apoyará.