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.
Commencez par la source de données que vous avez déjà
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_nr | name | menge | ziel |
|---|---|---|---|
| 4006381333930 | Cable tie 200 mm | 50 | Ramp 4 |
| 4006381333947 | Cable tie 300 mm | 25 | Ramp 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é (onOpen → SpreadsheetApp.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
| Étape | Quoi | Temps |
|---|---|---|
| 1 | Imprimante + Weblink/agent + profil | ~10 min |
| 2 | Design avec bindings nommés comme les colonnes | ~5 min |
| 3 | Feuille de calcul, éventuellement un Apps Script | ~5 min |
| 4 | Chemin d'impression (plateforme, API ou Print View) | ~2 min |
| 5 | L'opérateur scanne et imprime | secondes |
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.