← Todos los artículos

2026-09-14

Cómo imprimir etiquetas desde Google Sheets automáticamente

Cómo imprimir etiquetas desde Google Sheets automáticamente
pdf labels barcodes label merge browser based graphical layout editor google sheets addin microsoft excel addon electronic shelf labels esl barcode3 labels label editor

Cómo imprimir etiquetas desde Google Sheets automáticamente

Los datos de tus etiquetas ya están en Google Sheets. Las filas están ahí, las columnas son consistentes y, aun así, cada semana alguien exporta un CSV, lo sube a algún sitio y hace clic en Imprimir. Esta guía trata de eliminar a esa persona del proceso.

Al final, tendrás un flujo de trabajo repetible: una hoja que actúa como fuente de datos, un diseño de etiqueta en RSJ LPSNG que se asigna a tus columnas y un desencadenador que envía trabajos de impresión —a una impresora, a un PDF o a un PNG— cada vez que cambian tus datos. RSJ LPSNG (lpsng.rsj.de) es la plataforma gestionada de diseño e impresión de etiquetas que conecta ambos lados: incluye un complemento de Google Sheets para uso interactivo y una API de servicio web para la automatización, de modo que nunca vuelvas a tocar la ruta de impresión manualmente.

Esto está escrito para desarrolladores y usuarios avanzados de hojas de cálculo que necesitan etiquetas recurrentes —etiquetas de producto, etiquetas de envío, etiquetado específico por pedido—, no una impresión puntual.

Requisitos previos

Antes de empezar, asegúrate de tener:

  • Una cuenta de Google con acceso a Google Sheets y permiso para instalar complementos.
  • Una cuenta de RSJ LPSNG (edición cloud o embedded) con acceso al estudio de diseño de etiquetas y al complemento de Google Sheets.
  • Conocimientos básicos de las funciones de Google Sheets. Los conocimientos de Google Apps Script son opcionales, pero necesarios para la automatización completa.
  • Datos de etiquetas organizados en una hoja: una fila por etiqueta, con columnas para los campos que necesita tu etiqueta.
  • Para la automatización basada en API: credenciales OAuth2 para el servicio web de LPSNG. Consulta la documentación de OAuth2 para el flujo de registro simplificado.

Paso 1: Prepara tu hoja de Google como fuente de datos

Empieza por los datos, no por el diseño. Una hoja predecible es lo que hace que todo lo demás sea aburrido —en el buen sentido.

Estructúrala con una sola fila de encabezado y una fila por etiqueta:

SKU ProductName Price Barcode
RSJ-1001 Espresso Beans 250 g 8.90 4006381333931
RSJ-1002 Filter Papers 100 pcs 4.50 4006381333948

Algunas reglas que ahorran tiempo después:

  • Una fila = una etiqueta. No combines celdas; las celdas combinadas rompen la lectura de rangos en Apps Script.
  • Tipos de columna consistentes. Si Price es un número, mantenlo como número. Los tipos mixtos producen un formato impredecible en la etiqueta.
  • Los nombres de encabezado son los nombres de tus campos. Vincularás los campos de la etiqueta a estos encabezados, así que ProductName es mejor que Name (con un espacio final).
  • Mantén los datos de búsqueda separados. Si un maestro de productos o una lista de precios está en otra pestaña o rango, déjalo ahí y únelo en el momento de la lectura. La interfaz de Excel de LPSNG admite archivos de búsqueda para la impresión basada en hojas de cálculo, y la misma separación de responsabilidades se aplica a Sheets.
  • Usa rangos con nombre para el bloque de datos (por ejemplo, LabelData) si planeas programar contra él. Sobrevive mejor a las inserciones de filas que A2:E500.

Paso 2: Diseña tu etiqueta en LPSNG

Abre el estudio de etiquetas de LPSNG y crea un diseño nuevo, o parte de una plantilla existente si alguna coincide con tu soporte de etiquetas.

Luego vincula los campos:

  1. Coloca un elemento de texto en el lienzo y vincúlalo a la columna ProductName.
  2. Añade otro para Price y dale el formato en que quieres que aparezca en la etiqueta física.
  3. Añade un elemento de código de barras o QR y vincúlalo a Barcode. RSJ LPSNG admite formatos de código de barras 1D y 2D; la lista completa está en la documentación de Formatos de código de barras.
  4. Guarda el diseño y anota el ID o nombre de la etiqueta. Este es el identificador que pasarás al complemento y a la API.

Opcional pero útil: la API de Field Script te permite adjuntar un bloque de script de Python a un campo para que los valores se transformen antes de imprimir: recortar espacios en blanco, poner en mayúsculas un SKU o concatenar un nombre y una variante. Los nombres de objeto y métodos exactos están documentados en la API de Python; la forma de un script de campo es aproximadamente:

# Illustrative only — see the Field Script API docs for the real object names.
value = field.value.strip()
field.value = value.upper()

Mantener la lógica de formato en el diseño de la etiqueta significa que tu hoja sigue siendo datos limpios y tu salida de impresión se mantiene consistente.

Paso 3: Conecta Google Sheets con LPSNG mediante el complemento

Este paso demuestra que toda la ruta funciona antes de automatizarla.

  1. Instala el complemento de RSJ LPSNG para Google Sheets desde Google Workspace Marketplace.
  2. Abre tu hoja de datos e inicia el complemento desde el menú Extensiones.
  3. Autentícate con tu cuenta de LPSNG cuando se te solicite. Esto se ejecuta a través del flujo OAuth2, el mismo protocolo de registro simplificado descrito en la documentación de OAuth2.
  4. Selecciona el diseño de etiqueta que guardaste en el Paso 2.
  5. Asigna las columnas de tu hoja a los campos de la etiqueta. Si tus encabezados coinciden con los vínculos de campos, esto es en su mayor parte un paso de confirmación.
  6. Imprime o exporta etiquetas para unas cuantas filas seleccionadas.

Si eso produce etiquetas correctas, la asignación es correcta. Todo lo de los dos pasos siguientes es simplemente llamar a la misma operación sin que haya una persona presente.

La forma difícil: exportar la hoja a CSV a mano, subirla a una cola de impresión, repetir en cada cambio. LPSNG lo reemplaza con una sola acción del complemento, o una sola llamada a la API.

Paso 4: Automatiza la impresión con desencadenadores o la API de servicio web

Para la impresión programada o basada en eventos, pasa a la API de servicio web de LPSNG desde Google Apps Script. La API envía trabajos de impresión, renderiza etiquetas individuales como PDF o PNG y puede enviar trabajos directamente a una impresora.

Primero, confirma cómo obtendrás un token. El modelo OAuth2 de LPSNG usa un protocolo de registro simplificado diseñado para conectar sistemas externos con una sola URL; consulta la documentación de OAuth2 para saber qué solicitud de token exacta usa tu cuenta.

Luego envuelve el envío en una función. La ruta del endpoint y el esquema de la carga útil están definidos en la documentación de la Interfaz de servicio web; la estructura de abajo muestra la forma de la llamada.

// Constants — replace with the values from the Webservice Interface docs
const LPSNG_API_BASE = 'https://<your-lpsng-instance>';
const PRINT_ENDPOINT = '<path from the Webservice Interface docs>';
const LABEL_ID = 'product-label-a4';

function getAccessToken() {
  // OAuth2 token acquisition — see the OAuth2 documentation.
  // Cache the token; do not request a new one per label.
  return PropertiesService.getScriptProperties().getProperty('LPSNG_ACCESS_TOKEN');
}

function submitLabels(rows) {
  const payload = {
    label: LABEL_ID,
    // One entry per label to print
    data: rows.map(r => ({
      ProductName: r.ProductName,
      Price: r.Price,
      Barcode: r.Barcode
    })),
    output: 'pdf' // render to PDF/PNG, or send straight to a printer
  };

  const res = UrlFetchApp.fetch(LPSNG_API_BASE + PRINT_ENDPOINT, {
    method: 'post',
    contentType: 'application/json',
    headers: { Authorization: 'Bearer ' + getAccessToken() },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  });

  return JSON.parse(res.getContentText());
}

Si prefieres mantener el paso de impresión local y programable, LPSNG Player es un motor de impresión de línea de comandos independiente: entra un paquete más datos, sale PDF/PNG/JSON/impresión/ESL. Es el mismo paquete de etiqueta, controlado desde un shell en lugar de una llamada HTTP.

# LPSNG Player — package + data in, output out
lpsng-player --package product-label.lps --data rows.json --output labels.pdf

Paso 5: Configura la automatización recurrente (por tiempo o al editar)

Ahora adjunta el desencadenador. Dos patrones cubren la mayoría de los casos.

Por tiempo — busca filas nuevas cada hora. Va bien para flujos orientados a lotes donde unos minutos de latencia no importan.

function installHourlyTrigger() {
  ScriptApp.newTrigger('printNewRows')
    .timeBased()
    .everyHours(1)
    .create();
}

Al editar — imprime en el momento en que se añade o cambia una fila. Va bien para el etiquetado específico por pedido donde alguien está esperando la salida.

function onEditHandler(e) {
  const sheet = e.range.getSheet();
  if (sheet.getName() !== 'Labels') return;
  if (e.range.getRow() === 1) return; // ignore the header row
  printNewRows();
}

Ambos llaman al mismo worker, que es donde gestionas la idempotencia. El mecanismo fiable más sencillo es una columna de estado:

const SHEET_NAME = 'Labels';
const STATUS_COL = 5; // column E: blank or "pending" / "printed"

function printNewRows() {
  const sheet = SpreadsheetApp.getActive().getSheetByName(SHEET_NAME);
  const values = sheet.getDataRange().getValues();
  const header = values.shift();

  const pending = [];
  values.forEach((row, i) => {
    const status = row[STATUS_COL - 1];
    if (!status || status === 'pending') {
      pending.push({
        rowNumber: i + 2,
        data: Object.fromEntries(header.map((h, c) => [h, row[c]]))
      });
    }
  });

  if (!pending.length) return;

  const result = submitLabels(pending.map(p => p.data));

  // Adjust this check to the response fields your API version returns.
  if (result && result.error) {
    MailApp.sendEmail('ops@example.com', 'LPSNG print job failed',
      JSON.stringify(result));
    return;
  }

  pending.forEach(p => sheet.getRange(p.rowNumber, STATUS_COL).setValue('printed'));
}

Para volúmenes mayores, agrupa las filas en una sola llamada a la API en lugar de hacer un bucle con una solicitud por fila, y deja que la cola de trabajos de LPSNG gestione y supervise los trabajos de impresión resultantes.

Paso 6: Verifica y supervisa tu impresión automatizada

La automatización que no vigilas es la automatización en la que no confías. Cuatro comprobaciones la mantienen honesta:

  • Cola de trabajos. Consulta la cola de trabajos de LPSNG para ver el envío y la finalización correctos de cada trabajo.
  • Inspección de la salida. Abre el PDF o PNG generado y compáralo con las filas de origen, especialmente los valores de código de barras y el formato de los precios.
  • Columna de estado. Las filas marcadas como printed están procesadas; las que quedan en blanco o como pending no lo están. Esto es a la vez tu indicador de progreso y tu protección contra duplicados.
  • Notificaciones de error. Envuelve las llamadas a la API en un manejo de errores y envíate un correo cuando fallen. El MailApp de Apps Script es suficiente para volúmenes pequeños; consulta el registro de ejecución en Ejecuciones del editor de Apps Script cuando algo se detenga en silencio.

Solución de problemas comunes

Errores de autenticación. Los tokens caducan. Asegúrate de que tu script los renueve en lugar de reutilizar un valor obsoleto, confirma que los ámbitos coinciden con lo que requiere el servicio web y vuelve a autenticar el complemento si cambiaste de cuenta.

Problemas de asignación de datos. Los encabezados de columna deben coincidir con los vínculos de campos de tu diseño de etiqueta. Un encabezado renombrado es la causa más común de campos en blanco. Comprueba también si hay valores vacíos o mal formados: una celda de código de barras vacía producirá un símbolo ilegible.

Fallos en los trabajos de impresión. Confirma que la impresora es accesible y que está seleccionada la impresora correcta en LPSNG. Para escenarios de impresión en la nube, verifica que esté configurada la solución alternativa para impresoras térmicas descrita en la documentación de Impresión en la nube.

Etiquetas duplicadas. Controla siempre los envíos con una columna de estado o un ID de trabajo único por fila. Los desencadenadores al editar más los reintentos sin una protección imprimirán la misma etiqueta dos veces sin problema.

Rendimiento. Agrupa las solicitudes, evita lanzar muchos trabajos en una ventana corta y usa la cola de trabajos para suavizar los picos en lugar de saturar la API.

Preguntas frecuentes

¿Necesito ser desarrollador para configurar la impresión automática de etiquetas desde Google Sheets? No necesariamente. El complemento de RSJ LPSNG para Google Sheets ofrece una forma sin código de imprimir etiquetas desde tu hoja. Sin embargo, para la automatización completa —impresión programada o basada en eventos— se requiere algo de programación con Google Apps Script y la API de servicio web de LPSNG. La API usa OAuth2 y JSON, así que unas nociones básicas de desarrollo ayudan.

¿Puedo imprimir directamente en una impresora física desde Google Sheets? Sí, a través de RSJ LPSNG. La plataforma puede enviar trabajos de impresión directamente a impresoras, incluidas las impresoras térmicas. Para escenarios de impresión en la nube, LPSNG ofrece una solución alternativa para usar impresoras térmicas con Google Cloud Print. También puedes renderizar las etiquetas como PDF o PNG para imprimirlas manualmente.

¿Qué formatos de etiqueta y tipos de código de barras se admiten? RSJ LPSNG admite una amplia gama de formatos de código de barras 1D y 2D. Puedes diseñar etiquetas con texto, códigos de barras y otros elementos en el estudio de etiquetas. La lista exacta de formatos de código de barras admitidos está disponible en la documentación de LPSNG, en Formatos de código de barras.

¿Hay un límite en el número de etiquetas que puedo imprimir automáticamente? Los límites dependen de tu edición e implementación de LPSNG. La solución cloud es multiusuario y escalable, mientras que la edición embedded se ejecuta en un ordenador de placa única. Para la automatización de gran volumen, la cola de trabajos ayuda a gestionar los trabajos de impresión. Consulta los detalles específicos de la edición para conocer las restricciones.

Conclusión: Optimiza tu flujo de trabajo de impresión de etiquetas

El flujo completo son seis movimientos: estructurar la hoja, diseñar la etiqueta, conectar con el complemento, automatizar el envío, adjuntar un desencadenador, verificar la salida. Una vez que está en su sitio, una nueva fila de la hoja de cálculo se convierte en una etiqueta impresa sin paso de exportación y sin copiar y pegar, y una columna de estado te dice exactamente qué ha pasado con cada fila.

RSJ LPSNG está hecho precisamente para este tipo de trabajo recurrente. Como es un servicio gestionado, la ruta de impresión —renderizado, cola de trabajos, envío a impresora— se gestiona por ti, y el mismo diseño de etiqueta funciona en las ediciones cloud, embedded y enterprise según dónde necesites que se ejecute.

Empieza con el complemento de Google Sheets para comprobar tu asignación con unas cuantas filas y luego pasa a la API de servicio web cuando estés listo para eliminar el desencadenador manual. Ambas están documentadas desde el sitio del producto.

Entradas relacionadas

EU label: AI-generated content