zplCloud Blog
Del flujo de impresión con Google Sheets a la etiqueta impresa
Impresora → diseño → hoja de cálculo → Print View. Incluido el Apps Script que realmente autentica.
Empieza con la fuente de datos que ya tienes
La mayoría de los proyectos de etiquetas no se atascan en la impresora ni en el diseño. Se atascan en los datos: alguien tiene que ser dueño de la lista de artículos, y "conectaremos el ERP" se convierte en un ticket de seis semanas.
Así que empieza con una hoja de cálculo de Google. Es una fuente de datos real, todo el mundo en la oficina puede editarla, y el camino desde allí hasta una etiqueta impresa es corto. Cuando la conexión con el ERP esté finalmente lista, la etiqueta y la ruta de impresión no cambian - solo cambia de dónde vienen las filas.
Esta es toda la cadena, de principio a fin.
1 - Impresora en la red y conectada
Desembala, carga el medio, enciende, conéctala a la red y luego conéctala a zplCloud con el one-liner de Weblink o el agente CLI, y aplica un perfil de impresora para que la oscuridad y la velocidad coincidan con el medio. Eso está cubierto paso a paso en el post del speed-run; presupuesta 10 minutos.
2 - Diseña la etiqueta
En el diseñador, parte de una plantilla o en blanco y añade los campos que cambian por etiqueta: número de artículo, nombre, cantidad, destino. Nombra los bindings exactamente igual que los encabezados de las columnas de la hoja de cálculo - esa única decisión elimina todo el trabajo de mapeo posterior.
Comprueba la vista previa como PNG, PDF o SVG. Se renderiza en el servidor con el mismo motor que produce el ZPL, así que no es una aproximación.
Anota el ID del diseño. Es <nombre>.<id>, p. ej. shipping-label.42; lo necesitas para la API.
3 - La hoja de cálculo
Una fila por etiqueta, una columna por binding:
| artikel_nr | name | menge | ziel |
|---|---|---|---|
| 4006381333930 | Cable tie 200 mm | 50 | Ramp 4 |
| 4006381333947 | Cable tie 300 mm | 25 | Ramp 2 |
Camino A - sin código. Copia las filas en la pestaña Datos de prueba del diseñador o en un trabajo por lotes e imprime. Esto es suficiente para una tirada semanal y no requiere configuración alguna.
Camino B - Apps Script. La hoja se convierte en el disparador. Renderiza a través de la API pública con una clave API:
// Extensiones → Apps Script. Renderiza la fila activa y devuelve el ZPL.
const API_KEY = 'sk_zplcloud_…'; // pestaña API en la plataforma
const DESIGN_ID = 'shipping-label.42'; // "<nombre>.<id>"
function renderActiveRow() {
const sheet = SpreadsheetApp.getActiveSheet();
const header = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
const row = sheet.getRange(sheet.getActiveCell().getRow(), 1, 1, sheet.getLastColumn()).getValues()[0];
// El cuerpo es un array de registros: las claves deben coincidir con los bindings del diseño.
const record = {};
header.forEach((col, i) => record[col] = row[i]);
const res = UrlFetchApp.fetch(
'https://api.zplcloud.com/v1/zpl/render/design/' + DESIGN_ID,
{
method: 'post',
contentType: 'application/json',
headers: { 'X-API-Key': API_KEY },
payload: JSON.stringify([record]),
muteHttpExceptions: true // de lo contrario, un 4xx lanza antes de que puedas leer el mensaje
});
if (res.getResponseCode() !== 200) throw new Error(res.getContentText());
return res.getContentText(); // el ZPL
}
Dos límites a tener en cuenta en el diseño, ambos aplicados por la API:
- 500 registros por solicitud - divide las tiradas más grandes en lotes.
- Cuerpo de solicitud de 1 MB - con datos de etiquetas normales eso son miles de filas, así que el límite de registros se alcanza primero.
Añade un menú personalizado (onOpen → SpreadsheetApp.getUi().createMenu(...)) y tus compañeros tendrán una entrada Imprimir en la propia barra de menú de la hoja.
4 - Llevar el ZPL a la impresora
Renderizar e imprimir son dos pasos a propósito - puedes renderizar ahora e imprimir después, o renderizar una vez e imprimir en tres sitios.
- Desde la plataforma: el diseño imprime en una impresora Weblink o de agente con un clic, sin scripts.
- Desde tu propio código: envía el ZPL a la impresora por TCP 9100 a través del agente, o entrégalo a CloudToBrowserPrint en la máquina del operador.
- Para una persona: sáltate el script por completo y dale una Print View (siguiente paso).
5 - Print View para los que realmente imprimen
Crea una Print View a partir del diseño, marca menge y ziel como editables, bloquea artikel_nr, y respalda la vista con los datos de la hoja o una búsqueda. Comparte la URL o imprime el código QR y pégalo junto a la impresora.
El operador abre el enlace en el teléfono, escanea el código de barras del artículo en el campo, comprueba la vista previa en vivo y pulsa imprimir. Sin app, sin formación.
Toda la cadena
| Etapa | Qué | Tiempo |
|---|---|---|
| 1 | Impresora + Weblink/agente + perfil | ~10 min |
| 2 | Diseño con bindings nombrados como las columnas | ~5 min |
| 3 | Hoja de cálculo, opcionalmente un Apps Script | ~5 min |
| 4 | Ruta de impresión (plataforma, API o Print View) | ~2 min |
| 5 | El operador escanea e imprime | segundos |
Por qué una hoja de cálculo es una elección defendible
No es un compromiso del que tengas que disculparte. Una hoja te ofrece versionado, comentarios, acceso por usuario y un registro de auditoría de serie, y nadie necesita formación. Sus límites reales son la concurrencia y la integridad referencial - cuando dos personas editan la misma fila durante un turno, o cuando la lista de artículos tiene que coincidir exactamente con el ERP, esa es la señal para pasar al data hub y consultar SQL Server o MongoDB directamente.
La migración está contenida: mismo diseño, mismos bindings, misma Print View. Solo cambia la fuente de datos.