zplCloud Blog

Du flux d'impression Google Sheets à l'étiquette imprimée

Imprimante → design → feuille de calcul → Print View. Avec l'Apps Script qui s'authentifie vraiment.

4 min de lecture zplCloud Team

Commencez par la source de données que vous avez déjà

Lignes Google Sheets rendues par zplCloud et imprimées en étiquettes sur une imprimante Zebra

La plupart des projets d'étiquettes ne calent pas sur l'imprimante ou le design. Ils calent sur les données : quelqu'un doit être propriétaire de la liste d'articles, et « on connectera l'ERP » se transforme en ticket de six semaines.

Alors commencez par une feuille de calcul Google. C'est une vraie source de données, tout le monde au bureau peut la modifier, et le chemin de là jusqu'à une étiquette imprimée est court. Quand la connexion ERP sera enfin prête, l'étiquette et le chemin d'impression ne changent pas - seule change la provenance des lignes.

Voici toute la chaîne, de bout en bout.

1 - Imprimante sur le réseau et connectée

Déballage, chargement du support, mise sous tension, connexion au réseau, puis connexion à zplCloud avec le one-liner Weblink ou l'agent CLI, et application d'un profil d'imprimante pour que l'obscurité et la vitesse correspondent au support. C'est couvert pas à pas dans le post speed-run ; prévoyez 10 minutes.

2 - Concevez l'étiquette

Dans le designer, partez d'un modèle ou de zéro et ajoutez les champs qui changent par étiquette : numéro d'article, nom, quantité, destination. Nommez les bindings exactement comme les en-têtes de colonnes de la feuille de calcul - cette seule décision supprime tout le travail de mapping ensuite.

Vérifiez l'aperçu en PNG, PDF ou SVG. Il est rendu côté serveur par le même moteur qui produit le ZPL, ce n'est donc pas une approximation.

Notez l'ID du design. C'est <nom>.<id>, p. ex. shipping-label.42 ; vous en avez besoin pour l'API.

3 - La feuille de calcul

Une ligne par étiquette, une colonne par binding :

artikel_nrnamemengeziel
4006381333930Cable tie 200 mm50Ramp 4
4006381333947Cable tie 300 mm25Ramp 2

Chemin A - sans code. Copiez les lignes dans l'onglet Données de test du designer ou dans un travail par lots et imprimez. C'est suffisant pour une impression hebdomadaire et ne demande aucune configuration.

Chemin B - Apps Script. La feuille devient le déclencheur. Rendez via l'API publique avec une clé API :

// Extensions → Apps Script. Rend la ligne active et renvoie le ZPL.
const API_KEY   = 'sk_zplcloud_…';               // onglet API de la plateforme
const DESIGN_ID = 'shipping-label.42';           // "<nom>.<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];

  // Le corps est un tableau d'enregistrements : les clés doivent correspondre aux bindings du design.
  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          // sinon un 4xx lève avant que vous puissiez lire le message
    });

  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());
  return res.getContentText();          // le ZPL
}

Deux limites à contourner, toutes deux appliquées par l'API :

  • 500 enregistrements par requête - divisez les tirages plus importants en lots.
  • Corps de requête de 1 Mo - avec des données d'étiquettes normales, c'est des milliers de lignes, donc le plafond d'enregistrements s'atteint d'abord.

Ajoutez un menu personnalisé (onOpenSpreadsheetApp.getUi().createMenu(...)) et vos collègues obtiennent une entrée Imprimer dans la barre de menus de la feuille elle-même.

4 - Amener le ZPL à l'imprimante

Le rendu et l'impression sont deux étapes voulues - vous pouvez rendre maintenant et imprimer plus tard, ou rendre une fois et imprimer sur trois sites.

  • Depuis la plateforme : le design s'imprime sur une imprimante Weblink ou agent en un clic, sans script.
  • Depuis votre propre code : envoyez le ZPL à l'imprimante via TCP 9100 à travers l'agent, ou remettez-le à CloudToBrowserPrint sur la machine de l'opérateur.
  • Pour une personne : sautez complètement le script et donnez-lui une Print View (étape suivante).

5 - Print View pour ceux qui impriment vraiment

Créez une Print View à partir du design, marquez menge et ziel modifiables, verrouillez artikel_nr, et adossez la vue aux données de la feuille ou à une recherche. Partagez l'URL ou imprimez le QR code et collez-le près de l'imprimante.

L'opérateur ouvre le lien sur un téléphone, scanne le code-barres de l'article dans le champ, vérifie l'aperçu en direct et appuie sur imprimer. Pas d'app, pas de formation.

Toute la chaîne

ÉtapeQuoiTemps
1Imprimante + Weblink/agent + profil~10 min
2Design avec bindings nommés comme les colonnes~5 min
3Feuille de calcul, éventuellement un Apps Script~5 min
4Chemin d'impression (plateforme, API ou Print View)~2 min
5L'opérateur scanne et imprimesecondes

Pourquoi une feuille de calcul est un choix défendable

Ce n'est pas un compromis dont il faut s'excuser. Une feuille offre versionnage, commentaires, accès par utilisateur et piste d'audit d'office, et personne n'a besoin de formation. Ses vraies limites sont la concurrence et l'intégrité référentielle - quand deux personnes modifient la même ligne pendant un poste, ou quand la liste d'articles doit correspondre exactement à l'ERP, c'est le signal pour passer au data hub et interroger SQL Server ou MongoDB directement.

La migration est contenue : même design, mêmes bindings, même Print View. Seule la source de données change.

Liens

Autres articles