Comment imprimer automatiquement des étiquettes depuis Google Sheets
Vos données d’étiquettes résident déjà dans Google Sheets. Les lignes sont là, les colonnes sont cohérentes, et chaque semaine quelqu’un exporte encore un CSV, le téléverse quelque part et clique sur Imprimer. Ce guide vise à retirer cette personne de la boucle.
À la fin, vous disposerez d’un pipeline reproductible : une feuille qui sert de source de données, une conception d’étiquette dans RSJ LPSNG qui correspond à vos colonnes, et un déclencheur qui soumet des tâches d’impression — vers une imprimante, un PDF ou un PNG — chaque fois que vos données changent. RSJ LPSNG (lpsng.rsj.de) est la plateforme gérée de conception et d’impression d’étiquettes qui relie les deux côtés : elle fournit un module complémentaire Google Sheets pour une utilisation interactive et une API de service web pour l’automatisation, afin que vous ne touchiez plus jamais manuellement au chemin d’impression.
Ce guide est écrit pour les développeurs et les utilisateurs avancés de tableurs qui ont besoin d’étiquettes récurrentes — étiquettes produit, étiquettes d’expédition, étiquetage spécifique aux commandes — et non d’une impression ponctuelle.
Prérequis
Avant de commencer, assurez-vous de disposer de :
- Un compte Google avec accès à Google Sheets et l’autorisation d’installer des modules complémentaires.
- Un compte RSJ LPSNG (édition cloud ou embarquée) avec accès au studio de conception d’étiquettes et au module complémentaire Google Sheets.
- Une familiarité de base avec les fonctions de Google Sheets. La connaissance de Google Apps Script est facultative mais requise pour une automatisation complète.
- Des données d’étiquettes organisées dans une feuille : une ligne par étiquette, avec des colonnes pour les champs dont votre étiquette a besoin.
- Pour l’automatisation pilotée par API : des identifiants OAuth2 pour le service web LPSNG. Consultez la documentation OAuth2 pour le flux d’enregistrement simplifié.
Étape 1 : Préparer votre Google Sheet comme source de données
Commencez par les données, pas par la conception. Une feuille prévisible est ce qui rend tout le reste ennuyeux — dans le bon sens.
Structurez-la avec une seule ligne d’en-tête et une ligne par étiquette :
| SKU | ProductName | Price | Barcode |
|---|---|---|---|
| RSJ-1001 | Espresso Beans 250 g | 8.90 | 4006381333931 |
| RSJ-1002 | Filter Papers 100 pcs | 4.50 | 4006381333948 |
Quelques règles qui font gagner du temps par la suite :
- Une ligne = une étiquette. Ne fusionnez pas les cellules ; les cellules fusionnées cassent la lecture des plages dans Apps Script.
- Des types de colonnes cohérents. Si
Priceest un nombre, gardez-le comme nombre. Les types mixtes produisent un formatage imprévisible sur l’étiquette. - Les noms d’en-tête sont vos noms de champs. Vous lierez les champs d’étiquette à ces en-têtes, donc
ProductNameest préférable àName(avec un espace final). - Gardez les données de référence séparées. Si un référentiel produit ou une liste de prix réside dans un autre onglet ou une autre plage, gardez-le là et joignez-le au moment de la lecture. L’interface Excel de LPSNG prend en charge les fichiers de référence pour l’impression pilotée par tableur, et la même séparation des préoccupations s’applique à Sheets.
- Utilisez des plages nommées pour le bloc de données (par ex.
LabelData) si vous prévoyez de le scripter. Elles survivent mieux aux insertions de lignes queA2:E500.
Étape 2 : Concevoir votre étiquette dans LPSNG
Ouvrez le studio d’étiquettes LPSNG et créez une nouvelle mise en page — ou partez d’un modèle existant si l’un correspond à votre support d’étiquettes.
Ensuite, liez les champs :
- Déposez un élément texte sur le canevas et liez-le à la colonne
ProductName. - Ajoutez-en un autre pour
Price, et formatez-le comme vous voulez qu’il apparaisse sur l’étiquette physique. - Ajoutez un élément code-barres ou QR et liez-le à
Barcode. RSJ LPSNG prend en charge les formats de codes-barres 1D et 2D — la liste complète se trouve dans la documentation Barcode Formats. - Enregistrez la conception et notez l’ID ou le nom de l’étiquette. C’est l’identifiant que vous passerez au module complémentaire et à l’API.
Facultatif mais utile : l’API Field Script vous permet d’attacher un bloc de script Python à un champ afin que les valeurs soient transformées avant l’impression — suppression des espaces, mise en majuscules d’un SKU, ou concaténation d’un nom et d’une variante. Les noms d’objets et méthodes exacts sont documentés dans l’API Python ; la forme d’un script de champ est à peu près :
# Illustrative only — see the Field Script API docs for the real object names.
value = field.value.strip()
field.value = value.upper()
Garder la logique de formatage dans la conception de l’étiquette signifie que votre feuille reste des données propres et que votre sortie d’impression reste cohérente.
Étape 3 : Connecter Google Sheets à LPSNG avec le module complémentaire
Cette étape prouve que tout le chemin fonctionne avant de l’automatiser.
- Installez le module complémentaire RSJ LPSNG Google Sheets depuis le Google Workspace Marketplace.
- Ouvrez votre feuille de données et lancez le module complémentaire depuis le menu Extensions.
- Authentifiez-vous auprès de votre compte LPSNG lorsque vous y êtes invité. Cela passe par le flux OAuth2 — le même protocole d’enregistrement simplifié décrit dans la documentation OAuth2.
- Sélectionnez la conception d’étiquette que vous avez enregistrée à l’étape 2.
- Mappez vos colonnes de feuille aux champs d’étiquette. Si vos en-têtes correspondent à vos liaisons de champs, il s’agit surtout d’une étape de confirmation.
- Imprimez ou exportez les étiquettes pour une poignée de lignes sélectionnées.
Si cela produit des étiquettes correctes, le mappage est bon. Tout ce qui suit dans les deux prochaines étapes ne fait qu’appeler la même opération sans qu’un humain soit présent.
La manière difficile : exporter la feuille en CSV à la main, la téléverser dans une file d’impression, répéter à chaque changement. LPSNG remplace cela par une seule action de module complémentaire — ou un seul appel API.
Étape 4 : Automatiser l’impression avec des déclencheurs ou l’API de service web
Pour une impression planifiée ou événementielle, passez à l’API de service web LPSNG depuis Google Apps Script. L’API soumet des tâches d’impression, génère des étiquettes individuelles en PDF ou PNG, et peut envoyer des tâches directement à une imprimante.
D’abord, confirmez comment vous obtiendrez un jeton. Le modèle OAuth2 de LPSNG utilise un protocole d’enregistrement simplifié conçu pour connecter des systèmes externes avec une seule URL — consultez la documentation OAuth2 pour la demande de jeton exacte utilisée par votre compte.
Ensuite, encapsulez la soumission dans une fonction. Le chemin du point de terminaison et le schéma de charge utile sont définis dans la documentation Webservice Interface ; la structure ci-dessous montre la forme de l’appel.
// 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 vous préférez garder l’étape d’impression locale et scriptable, le LPSNG Player est un moteur d’impression en ligne de commande autonome : package plus données en entrée, PDF/PNG/JSON/impression/ESL en sortie. C’est le même package d’étiquette, piloté depuis un shell au lieu d’un appel HTTP.
# LPSNG Player — package + data in, output out
lpsng-player --package product-label.lps --data rows.json --output labels.pdf
Étape 5 : Configurer une automatisation récurrente (temporelle ou sur modification)
Maintenant, attachez le déclencheur. Deux modèles couvrent la plupart des cas.
Temporel — vérifier les nouvelles lignes toutes les heures. Adapté aux flux orientés par lots où quelques minutes de latence sont acceptables.
function installHourlyTrigger() {
ScriptApp.newTrigger('printNewRows')
.timeBased()
.everyHours(1)
.create();
}
Sur modification — imprimer dès qu’une ligne est ajoutée ou modifiée. Adapté à l’étiquetage spécifique aux commandes où quelqu’un attend la sortie.
function onEditHandler(e) {
const sheet = e.range.getSheet();
if (sheet.getName() !== 'Labels') return;
if (e.range.getRow() === 1) return; // ignore the header row
printNewRows();
}
Les deux appellent le même worker, où vous gérez l’idempotence. Le mécanisme fiable le plus simple est une colonne de statut :
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'));
}
Pour des volumes plus élevés, regroupez les lignes en un seul appel API plutôt que de boucler une requête par ligne, et laissez la file de tâches LPSNG gérer et surveiller les tâches d’impression résultantes.
Étape 6 : Vérifier et surveiller votre impression automatisée
Une automatisation que vous ne surveillez pas est une automatisation en laquelle vous n’avez pas confiance. Quatre vérifications la gardent honnête :
- File de tâches. Consultez la file de tâches LPSNG pour la soumission et l’achèvement réussis de chaque tâche.
- Inspection de la sortie. Ouvrez le PDF ou PNG généré et comparez-le aux lignes sources — en particulier les valeurs de codes-barres et le formatage des prix.
- Colonne de statut. Les lignes marquées
printedsont traitées ; les lignes laissées vides oupendingne le sont pas. C’est à la fois votre indicateur de progression et votre garde anti-doublons. - Notifications d’erreur. Encapsulez les appels API dans une gestion d’erreurs et envoyez-vous un mail en cas d’échec. Le
MailAppd’Apps Script suffit pour de petits volumes ; consultez le journal d’exécution sous Executions dans l’éditeur Apps Script quand quelque chose s’arrête silencieusement.
Dépannage des problèmes courants
Erreurs d’authentification. Les jetons expirent. Assurez-vous que votre script les rafraîchit plutôt que de réutiliser une valeur périmée, confirmez que les scopes correspondent à ce qu’exige le service web, et réauthentifiez le module complémentaire si vous avez changé de compte.
Problèmes de mappage des données. Les en-têtes de colonnes doivent correspondre aux liaisons de champs de votre conception d’étiquette. Un en-tête renommé est la cause la plus fréquente de champs vides. Vérifiez aussi les valeurs vides ou malformées — une cellule de code-barres vide produira un symbole illisible.
Échecs de tâches d’impression. Confirmez que l’imprimante est joignable et que la bonne imprimante est sélectionnée dans LPSNG. Pour les scénarios d’impression cloud, vérifiez que le contournement pour imprimante thermique décrit dans la documentation Cloud Printing est configuré.
Étiquettes en double. Conditionnez toujours les soumissions à une colonne de statut ou à un ID de tâche unique par ligne. Les déclencheurs sur modification plus les tentatives sans garde imprimeront allègrement la même étiquette deux fois.
Performance. Regroupez les requêtes, évitez de déclencher de nombreuses tâches sur une courte fenêtre, et utilisez la file de tâches pour lisser les pics plutôt que de marteler l’API.
FAQ
Dois-je être développeur pour configurer l’impression automatique d’étiquettes depuis Google Sheets ? Pas nécessairement. Le module complémentaire RSJ LPSNG Google Sheets offre un moyen sans code d’imprimer des étiquettes depuis votre feuille. Cependant, pour une automatisation complète — impression planifiée ou événementielle — un peu de scripting avec Google Apps Script et l’API de service web LPSNG est nécessaire. L’API utilise OAuth2 et JSON, donc des compétences de base en développement aident.
Puis-je imprimer directement sur une imprimante physique depuis Google Sheets ? Oui, via RSJ LPSNG. La plateforme peut envoyer des tâches d’impression directement aux imprimantes, y compris les imprimantes thermiques. Pour les scénarios d’impression cloud, LPSNG propose un contournement pour utiliser des imprimantes thermiques avec Google Cloud Print. Vous pouvez aussi générer des étiquettes en PDF ou PNG pour une impression manuelle.
Quels formats d’étiquettes et types de codes-barres sont pris en charge ? RSJ LPSNG prend en charge une large gamme de formats de codes-barres 1D et 2D. Vous pouvez concevoir des étiquettes avec du texte, des codes-barres et d’autres éléments dans le studio d’étiquettes. La liste exacte des formats de codes-barres pris en charge est disponible dans la documentation LPSNG sous Barcode Formats.
Y a-t-il une limite au nombre d’étiquettes que je peux imprimer automatiquement ? Les limites dépendent de votre édition et de votre déploiement LPSNG. La solution cloud est multi-utilisateur et évolutive, tandis que l’édition embarquée fonctionne sur un ordinateur à carte unique. Pour l’automatisation à haut volume, la file de tâches aide à gérer les tâches d’impression. Consultez les détails de l’édition spécifique pour toute contrainte.
Conclusion : Rationalisez votre flux d’impression d’étiquettes
Le pipeline complet se compose de six mouvements : structurer la feuille, concevoir l’étiquette, connecter avec le module complémentaire, automatiser la soumission, attacher un déclencheur, vérifier la sortie. Une fois en place, une nouvelle ligne de tableur devient une étiquette imprimée sans étape d’export ni copier-coller — et une colonne de statut vous dit exactement ce qui est arrivé à chaque ligne.
RSJ LPSNG est conçu exactement pour ce type de travail récurrent. Parce qu’il s’agit d’un service géré, le chemin d’impression — rendu, file de tâches, envoi vers l’imprimante — est pris en charge pour vous, et la même conception d’étiquette fonctionne sur les éditions cloud, embarquée et entreprise selon l’endroit où vous avez besoin qu’elle s’exécute.
Commencez par le module complémentaire Google Sheets pour valider votre mappage sur une poignée de lignes, puis passez à l’API de service web lorsque vous êtes prêt à supprimer le déclencheur manuel. Les deux sont documentés depuis le site produit.
Articles connexes
- How to Create QR Code Labels in Bulk Efficiently
- Label Printing for Small Business Owners: A Complete Guide
- Barcode Label Software vs Online Label Maker: Which Is Right for You?
