Como Imprimir Etiquetas do Google Sheets Automaticamente
Os dados das suas etiquetas já estão no Google Sheets. As linhas estão lá, as colunas são consistentes, e mesmo assim, toda semana alguém exporta um CSV, faz upload em algum lugar e clica em Imprimir. Este guia trata de remover essa pessoa do processo.
Ao final, você terá um pipeline repetível: uma planilha que atua como fonte de dados, um design de etiqueta no RSJ LPSNG que mapeia para suas colunas, e um gatilho que envia trabalhos de impressão — para uma impressora, um PDF ou um PNG — sempre que seus dados mudarem. O RSJ LPSNG (lpsng.rsj.de) é a plataforma gerenciada de design e impressão de etiquetas que conecta os dois lados: ela oferece um Add-on do Google Sheets para uso interativo e uma API de serviço web para automação, para que você nunca mais toque no caminho de impressão manualmente.
Este texto é destinado a desenvolvedores e usuários avançados de planilhas que precisam de etiquetas recorrentes — etiquetas de produto, etiquetas de envio, etiquetagem específica por pedido — e não de uma impressão pontual.
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta Google com acesso ao Google Sheets e permissão para instalar add-ons.
- Uma conta RSJ LPSNG (edição cloud ou embedded) com acesso ao estúdio de design de etiquetas e ao Add-on do Google Sheets.
- Familiaridade básica com funções do Google Sheets. Conhecimento de Google Apps Script é opcional, mas necessário para automação completa.
- Dados de etiquetas organizados em uma planilha: uma linha por etiqueta, com colunas para os campos que sua etiqueta precisa.
- Para automação via API: credenciais OAuth2 para o serviço web do LPSNG. Consulte a documentação do OAuth2 para o fluxo de registro simplificado.
Passo 1: Prepare seu Google Sheet como Fonte de Dados
Comece pelos dados, não pelo design. Uma planilha previsível é o que torna tudo o que vem depois entediante — no bom sentido.
Estruture-a com uma única linha de cabeçalho e uma linha por etiqueta:
| SKU | ProductName | Price | Barcode |
|---|---|---|---|
| RSJ-1001 | Espresso Beans 250 g | 8.90 | 4006381333931 |
| RSJ-1002 | Filter Papers 100 pcs | 4.50 | 4006381333948 |
Algumas regras que economizam tempo depois:
- Uma linha = uma etiqueta. Não mescle células; células mescladas quebram a leitura de intervalos no Apps Script.
- Tipos de coluna consistentes. Se
Priceé um número, mantenha como número. Tipos mistos produzem formatação imprevisível na etiqueta. - Nomes de cabeçalho são seus nomes de campo. Você vinculará campos da etiqueta a esses cabeçalhos, então
ProductNameé melhor queName(com um espaço à direita). - Mantenha dados de consulta separados. Se um cadastro de produtos ou lista de preços estiver em outra aba ou intervalo, mantenha lá e faça a junção no momento da leitura. A interface Excel do LPSNG suporta arquivos de consulta para impressão orientada por planilha, e a mesma separação de responsabilidades se aplica ao Sheets.
- Use intervalos nomeados para o bloco de dados (por exemplo,
LabelData) se você planeja criar scripts sobre ele. Ele sobrevive melhor a inserções de linhas do queA2:E500.
Passo 2: Projete sua Etiqueta no LPSNG
Abra o estúdio de etiquetas do LPSNG e crie um novo layout — ou comece a partir de um modelo existente, se algum corresponder ao seu estoque de etiquetas.
Em seguida, vincule os campos:
- Solte um elemento de texto na tela e vincule-o à coluna
ProductName. - Adicione outro para
Pricee formate-o da maneira que você quer que apareça na etiqueta física. - Adicione um elemento de código de barras ou QR e vincule-o a
Barcode. O RSJ LPSNG suporta formatos de código de barras 1D e 2D — a lista completa está na documentação de Formatos de Código de Barras. - Salve o design e anote o ID ou nome da etiqueta. Este é o identificador que você passará para o add-on e para a API.
Opcional, mas útil: a API de Field Script permite anexar um bloco de script Python a um campo para que os valores sejam transformados antes da impressão — remover espaços em branco, colocar um SKU em maiúsculas ou concatenar um nome e uma variante. Os nomes exatos de objetos e métodos estão documentados na API Python; o formato de um field script é aproximadamente:
# Apenas ilustrativo — consulte a documentação da Field Script API para os nomes reais dos objetos.
value = field.value.strip()
field.value = value.upper()
Manter a lógica de formatação no design da etiqueta significa que sua planilha permanece com dados limpos e sua saída de impressão permanece consistente.
Passo 3: Conecte o Google Sheets ao LPSNG com o Add-on
Este passo comprova que todo o caminho funciona antes de você automatizá-lo.
- Instale o RSJ LPSNG Google Sheets Add-on no Google Workspace Marketplace.
- Abra sua planilha de dados e inicie o add-on pelo menu Extensões.
- Autentique-se na sua conta LPSNG quando solicitado. Isso passa pelo fluxo OAuth2 — o mesmo protocolo de registro simplificado descrito na documentação do OAuth2.
- Selecione o design de etiqueta que você salvou no Passo 2.
- Mapeie as colunas da sua planilha para os campos da etiqueta. Se seus cabeçalhos correspondem aos vínculos de campo, este é basicamente um passo de confirmação.
- Imprima ou exporte etiquetas para algumas linhas selecionadas.
Se isso produzir etiquetas corretas, o mapeamento está certo. Tudo nos próximos dois passos é apenas chamar a mesma operação sem um humano presente.
O jeito difícil: exportar a planilha para CSV manualmente, fazer upload para uma fila de impressão, repetir a cada alteração. O LPSNG substitui isso por uma única ação do add-on — ou uma única chamada de API.
Passo 4: Automatize a Impressão com Gatilhos ou a API de Serviço Web
Para impressão agendada ou orientada por eventos, migre para a API de serviço web do LPSNG a partir do Google Apps Script. A API envia trabalhos de impressão, renderiza etiquetas individuais como PDF ou PNG e pode enviar trabalhos diretamente para uma impressora.
Primeiro, confirme como você obterá um token. O modelo OAuth2 do LPSNG usa um protocolo de registro simplificado projetado para conectar sistemas externos com uma única URL — consulte a documentação do OAuth2 para a solicitação de token exata que sua conta utiliza.
Em seguida, envolva o envio em uma função. O caminho do endpoint e o esquema de payload estão definidos na documentação da Interface de Webservice; a estrutura abaixo mostra o formato da chamada.
// Constantes — substitua pelos valores da documentação da Interface de Webservice
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() {
// Obtenção de token OAuth2 — consulte a documentação do OAuth2.
// Faça cache do token; não solicite um novo por etiqueta.
return PropertiesService.getScriptProperties().getProperty('LPSNG_ACCESS_TOKEN');
}
function submitLabels(rows) {
const payload = {
label: LABEL_ID,
// Uma entrada por etiqueta a imprimir
data: rows.map(r => ({
ProductName: r.ProductName,
Price: r.Price,
Barcode: r.Barcode
})),
output: 'pdf' // renderiza para PDF/PNG, ou envia direto para uma impressora
};
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());
}
Se você preferir manter o passo de impressão local e scriptável, o LPSNG Player é um motor de impressão de linha de comando autônomo: pacote mais dados na entrada, PDF/PNG/JSON/impressão/ESL na saída. É o mesmo pacote de etiqueta, acionado a partir de um shell em vez de uma chamada HTTP.
# LPSNG Player — pacote + dados na entrada, saída na saída
lpsng-player --package product-label.lps --data rows.json --output labels.pdf
Passo 5: Configure a Automação Recorrente (Baseada em Tempo ou On-Edit)
Agora anexe o gatilho. Dois padrões cobrem a maioria dos casos.
Baseado em tempo — verifica novas linhas a cada hora. Bom para fluxos orientados a lote, onde alguns minutos de latência são aceitáveis.
function installHourlyTrigger() {
ScriptApp.newTrigger('printNewRows')
.timeBased()
.everyHours(1)
.create();
}
On-edit — imprime no momento em que uma linha é adicionada ou alterada. Bom para etiquetagem específica por pedido, onde alguém está aguardando a saída.
function onEditHandler(e) {
const sheet = e.range.getSheet();
if (sheet.getName() !== 'Labels') return;
if (e.range.getRow() === 1) return; // ignora a linha de cabeçalho
printNewRows();
}
Ambos chamam o mesmo worker, que é onde você trata a idempotência. O mecanismo confiável mais simples é uma coluna de status:
const SHEET_NAME = 'Labels';
const STATUS_COL = 5; // coluna E: em branco ou "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));
// Ajuste esta verificação para os campos de resposta que sua versão da API retorna.
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 volumes maiores, agrupe linhas em uma única chamada de API em vez de fazer um loop com uma requisição por linha, e deixe a fila de trabalhos do LPSNG gerenciar e monitorar os trabalhos de impressão resultantes.
Passo 6: Verifique e Monitore sua Impressão Automatizada
Automação que você não observa é automação em que você não confia. Quatro verificações a mantêm honesta:
- Fila de trabalhos. Olhe a fila de trabalhos do LPSNG para o envio bem-sucedido e a conclusão de cada trabalho.
- Inspeção da saída. Abra o PDF ou PNG gerado e compare-o com as linhas de origem — especialmente valores de código de barras e formatação de preço.
- Coluna de status. Linhas marcadas como
printedestão processadas; linhas deixadas em branco oupendingnão estão. Isso é tanto seu indicador de progresso quanto sua proteção contra duplicatas. - Notificações de erro. Envolva as chamadas de API em tratamento de erros e envie um e-mail para você mesmo em caso de falha. O
MailAppdo Apps Script é suficiente para pequenos volumes; verifique o log de execução em Executions no editor do Apps Script quando algo parar silenciosamente.
Solução de Problemas Comuns
Erros de autenticação. Tokens expiram. Certifique-se de que seu script os renove em vez de reutilizar um valor obsoleto, confirme que os escopos correspondem ao que o serviço web exige e reautentique o add-on se você mudou de conta.
Problemas de mapeamento de dados. Os cabeçalhos das colunas devem corresponder aos vínculos de campo no seu design de etiqueta. Um cabeçalho renomeado é a causa mais comum de campos em branco. Verifique também valores vazios ou malformados — uma célula de código de barras vazia produzirá um símbolo ilegível.
Falhas em trabalhos de impressão. Confirme que a impressora está acessível e que a impressora correta está selecionada no LPSNG. Para cenários de impressão em nuvem, verifique se a solução alternativa para impressoras térmicas descrita na documentação de Impressão em Nuvem está configurada.
Etiquetas duplicadas. Sempre condicione os envios a uma coluna de status ou a um ID de trabalho único por linha. Gatilhos on-edit mais tentativas sem uma proteção imprimirão alegremente a mesma etiqueta duas vezes.
Desempenho. Agrupe requisições, evite disparar muitos trabalhos em uma janela curta e use a fila de trabalhos para suavizar picos em vez de martelar a API.
Perguntas Frequentes
Preciso ser um desenvolvedor para configurar a impressão automática de etiquetas a partir do Google Sheets? Não necessariamente. O RSJ LPSNG Google Sheets Add-on oferece uma maneira sem código de imprimir etiquetas a partir da sua planilha. No entanto, para automação completa — impressão agendada ou orientada por eventos — é necessário algum script com Google Apps Script e a API de serviço web do LPSNG. A API usa OAuth2 e JSON, então habilidades básicas de desenvolvimento ajudam.
Posso imprimir diretamente em uma impressora física a partir do Google Sheets? Sim, através do RSJ LPSNG. A plataforma pode enviar trabalhos de impressão diretamente para impressoras, incluindo impressoras térmicas. Para cenários de impressão em nuvem, o LPSNG oferece uma solução alternativa para usar impressoras térmicas com o Google Cloud Print. Você também pode renderizar etiquetas como PDF ou PNG para impressão manual.
Quais formatos de etiqueta e tipos de código de barras são suportados? O RSJ LPSNG suporta uma ampla variedade de formatos de código de barras 1D e 2D. Você pode projetar etiquetas com texto, códigos de barras e outros elementos no estúdio de etiquetas. A lista exata de formatos de código de barras suportados está disponível na documentação do LPSNG em Formatos de Código de Barras.
Existe um limite para o número de etiquetas que posso imprimir automaticamente? Os limites dependem da sua edição e implantação do LPSNG. A solução em nuvem é multiusuário e escalável, enquanto a edição embedded roda em um computador de placa única. Para automação de alto volume, a fila de trabalhos ajuda a gerenciar os trabalhos de impressão. Verifique os detalhes específicos da edição para quaisquer restrições.
Conclusão: Simplifique seu Fluxo de Trabalho de Impressão de Etiquetas
O pipeline completo tem seis movimentos: estruturar a planilha, projetar a etiqueta, conectar com o add-on, automatizar o envio, anexar um gatilho, verificar a saída. Uma vez que esteja em vigor, uma nova linha na planilha se torna uma etiqueta impressa sem etapa de exportação e sem copiar e colar — e uma coluna de status informa exatamente o que aconteceu com cada linha.
O RSJ LPSNG foi construído exatamente para esse tipo de trabalho recorrente. Por ser um serviço gerenciado, o caminho de impressão — renderização, fila de trabalhos, despacho para impressora — é tratado para você, e o mesmo design de etiqueta funciona nas edições cloud, embedded e enterprise, dependendo de onde você precisa que ele rode.
Comece com o Google Sheets Add-on para comprovar seu mapeamento em algumas linhas, depois migre para a API de serviço web quando estiver pronto para remover o gatilho manual. Ambos estão documentados no site do produto.
Posts relacionados
- 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?
