Herramientas
Apps Script para Google Sheets
Si lo único que necesitas es ver tus pedidos en una hoja de Google, esta es la ruta más corta. Pegas el script, le pones tu API key, y le das ejecutar.
Setup en 4 pasos
- Crea una hoja nueva en sheets.new.
- Menú Extensions → Apps Script. Borra el código que viene por defecto.
- Pega el script que está más abajo.
- Reemplaza
SELLERP_API_KEYcon tu clave (Settings → API en SELLERP). - Click Run → fetchOrders. La primera vez Google te pide permisos — acéptalos.
Plantilla
/**
* SELLERP → Google Sheets export.
* Trae los últimos pedidos a la hoja activa.
*/
const SELLERP_API_KEY = "sellk_..."; // ⚠️ pega aquí tu clave
const SELLERP_BASE = "https://api.sellerp.com/v1";
function fetchOrders() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.clear();
sheet.appendRow([
"id", "marketplace", "status", "total", "currency",
"buyer", "date_created", "date_closed"
]);
let cursor = null;
let total = 0;
do {
const url = SELLERP_BASE + "/orders?limit=100" + (cursor ? "&cursor=" + cursor : "");
const res = UrlFetchApp.fetch(url, {
headers: { Authorization: "Bearer " + SELLERP_API_KEY },
muteHttpExceptions: true,
});
if (res.getResponseCode() !== 200) {
throw new Error("SELLERP " + res.getResponseCode() + ": " + res.getContentText());
}
const body = JSON.parse(res.getContentText());
for (const o of body.data) {
sheet.appendRow([
o.id, o.marketplace, o.status, o.total, o.currency,
o.buyer_name || "", o.date_created, o.date_closed
]);
total++;
}
cursor = body.pagination && body.pagination.next_cursor;
} while (cursor);
SpreadsheetApp.getActive().toast(total + " pedidos importados", "SELLERP");
}
/**
* Trigger automático cada hora — ejecuta esto una sola vez para programarlo.
*/
function setupHourlyTrigger() {
ScriptApp.getProjectTriggers().forEach(t => ScriptApp.deleteTrigger(t));
ScriptApp.newTrigger("fetchOrders").timeBased().everyHours(1).create();
}Campos disponibles para envíos ZIPNOVA
Si tu cuenta usa ZIPNOVA, cada pedido viene con un objeto shipment que expone los campos logísticos del envío. Puedes acceder a ellos en tu script para sumar columnas a tu hoja:
// Información del transportista
o.shipment.carrier_name // "Estafeta"
o.shipment.carrier_id // ID estable del transportista
o.shipment.carrier_logo_url // URL del logo (opcional)
// Tracking
o.shipment.tracking_number // guía visible
o.shipment.tracking_number_alt // guía secundaria si la hay
o.shipment.tracking_external // referencia del marketplace origen (ML/Shopify)
// Fechas del journey
o.shipment.date_shipped // primer evento "enviado"
o.shipment.date_delivered // último evento "entregado"
o.shipment.date_cancelled // primer evento "cancelado" (null si nunca)
o.shipment.date_returned // primer evento "devuelto" (null si nunca)
o.shipment.dropoff_deadline_at // SLA de hand-off al transportista
o.shipment.last_updated // timestamp del último evento de tracking
// Logística
o.shipment.service_type // tipo de servicio ZIPNOVA
o.shipment.logistic_type // modalidad ("delivery_address", "pickup", etc)
o.shipment.total_weight_kg // peso total en kg
o.shipment.total_volume_m3 // volumen total en m³
// Origen
o.shipment.external_shipment_source // canal origen ("mercadolibre", "shopify", null)
o.shipment.parent_shipment_id // referencia a envío padre (devoluciones)
o.shipment.delivery_idTodos los campos pueden ser null cuando el dato no aplica al envío. La línea de tiempo detallada (cada evento intermedio del tracking) no se expone en API v1 — si la necesitas, llama directamente al endpoint GET /v2/shipments/{id}/tracking de ZIPNOVA con tus credenciales propias.
Próximamente: add-on oficial
Estamos trabajando en un Google Workspace add-on oficial: install desde el Marketplace de Google, login con SELLERP (sin manejar API keys), botón en la toolbar para refrescar. Hasta entonces, esta plantilla cubre el 95% de los casos.