直接从 Google Sheets 自动打印标签
你已经有了数据。它就在一张电子表格里——SKU、产品名称、条形码、价格、批次号——而且它是团队里每个人实际都在编辑的唯一事实来源。
然后总得有人把这些行导出成 CSV,打开标签设计器,重新导入数据,重新对齐每个字段,再打印这一批。一次又一次。每次价格变动或新 SKU 上线,都要重来一遍。
如果你想从 Google Sheets 自动打印标签,目标很简单:电子表格留在原地,标签从另一端出来。没有导出步骤,没有重新导入,没有字段对齐的往返。本文会带你走完一次性设置、流水线,以及让它可靠运行所需的故障处理。
为什么从 Google Sheets 手动打印标签浪费时间
这个重复性任务的形态永远是一样的:
- 把相关行导出成 CSV。
- 打开标签设计器,把文件作为数据源加载。
- 重新把列映射到字段,因为导出顺序又变了。
- 手动逐批打印,一次一个文件。
隐藏的成本不是每批那十分钟。而是任何数据变更——产品更新、价格变动、新 SKU——都会迫使你在产出哪怕一张标签之前走完一整套手动往返。你的电子表格是实时的;你的标签不是。
有两类人感受最深:
- 构建内部工具的开发者,被要求“把打印接上就行”,最后却要维护一个脆弱的导出脚本。
- 最终用户,在库存、发货和零售岗位上,只关心一件事:货架或纸箱上的标签和他们刚输入的数据一致。
自动化本该是什么样子:你编辑一行,你打印。电子表格是前端,标签系统是渲染器。
这正是 Next Generation Label Printing System(LPSNG)的用武之地——一个把 Google Sheets 变成标签打印前端的托管插件。
一次性设置:把 Google Sheets 连接到你的标签系统
设置只做一次。之后,打印就是点一下按钮。
1. 安装插件。 从 LPSNG 集成页面获取 Google Sheets 插件,并针对你的 LPSNG 账户授权。该插件列在平台的集成项中——与 Excel 接口、可复用侧边栏和字段脚本 API 并列。
2. 理解 OAuth2 注册。 LPSNG 使用简化的 OAuth2 注册协议来连接外部系统:一个 URL 就能把插件连接到你的 LPSNG 实例。无论你运行的是托管云版本还是自己硬件上的打印站,这个 URL 都是一样的。你注册一次;插件会获得一个令牌并为你刷新。你永远不需要把令牌粘贴到单元格里。
3. 准备表格。 一行一张标签。列标题要能干净地映射到标签字段:
| 表格列 | 标签字段 |
|---|---|
product_name |
产品名称(文本块) |
barcode |
条形码符号(1D/2D) |
price |
价格文本 |
batch_no |
批次 / 批号 |
保持表头行稳定。之后把 barcode 改名为 bar_code,是破坏一个正常设置最常见的方式。
4. 创建布局。 在 LPSNG 标签工作室中构建或导入一个标签布局,然后把表格列绑定到布局字段,让每一行恰好渲染成一张标签。条形码是原生处理的——LPSNG 支持多种 1D 和 2D 条形码格式,所以 barcode 列无需任何额外工具就能渲染成可扫描的符号。
5. 一次性选好输出目标。 PDF 下载、直接打印到已配置的打印机,或用于预览的 PNG。你可以把一批预览为 PDF,然后把同一布局发送到热敏打印机。
如果你还在挑选平台,面向系统集成商的标签设计软件采购指南更深入地介绍了评估标准。
自动化流水线:从编辑表格到打印标签
映射建立之后,有两种触发输出的方式。
按需。 打开插件侧边栏,选择你关心的行或范围,然后打印。这是单次重打或修正价格的日常路径。
带过滤器的批量。 对所有匹配过滤器的行运行——例如,辅助列中所有标记为 status = pending 的行。插件会把所选内容提交给 LPSNG Web 服务,后者用你保存的布局渲染每一行并将任务排队。
打印前的字段级逻辑
真实的表格很乱。日期以时间戳形式出现,校验位缺失,一半的产品名称需要尺寸后缀。与其在表格里清理一切,不如把 Python 脚本块附加到标签字段本身。字段脚本在打印前运行,可以读取并修改传入的值:
# 附加到 "price" 标签字段的示例字段脚本。
# 每个字段的形态都一样:接收传入值,
# 返回最终应出现在标签上的字符串。
def prepare(value):
amount = float(value)
return f"{amount:,.2f} EUR"
同样的机制可以处理日期格式化、把两列拼接成一个地址块,或从原始货号计算校验位。注意这是字段逻辑——它改变的是打印出来的内容,而绝不是表格中存储的内容。
作为对照的硬核做法
你可以跳过插件。Web 服务 API 接受带 OAuth2 令牌和原始 JSON 负载的任务——这正是插件发起的同一个调用。但那样的话,令牌刷新、重试逻辑、列映射,以及你自己脚本的每一次破坏性变更,都得由你负责。如果你特别想要那种级别的控制,Web 服务演练介绍了请求/响应模型。
托管方式是更短的那条路:编辑表格,点击打印,收取标签。插件替你完成 Web 服务调用。
监控任务与处理故障
打印是 I/O,而 I/O 会失败。重要的是你能看到哪些行失败了,并只重跑那些行。
- 使用任务队列。 提交的打印任务会带着状态出现在 LPSNG 任务队列中,所以你可以把一个任务追溯回产生它的表格行。
- 了解常见的罪魁祸首。 大多数失败是三种情况之一:某行必填字段为空、目标打印机离线,或某个布局字段不再映射到表格列(通常发生在列改名之后)。
把表格设计成重试成本很低的样子。加一个状态列,或用公式推导出来:
=IF(OR(B2="",C2=""),"BLOCKED","READY")
现在部分失败就是一个过滤器,而不是重打整批:修复该行,把它设回 READY,然后只打印 READY 的行。
对于更高量或无人值守的运行,LPSNG Player——独立的命令行打印引擎——接收一个包加一个数据文件,输出 PDF、PNG、JSON 或直接打印任务。每次调用的形态都一样:指向一个包,指向数据,告诉它输出什么。
# 包进,数据进,文件出。请查阅 Player 文档
# 了解你所用版本的确切标志名称。
lpsng-player \
--package ./labels/retail-shelf.lpsng \
--data ./exports/price-update.csv \
--out ./out/labels.pdf
留意发布说明和 LPSNG 博客中影响任务提交行为的插件和 Web 服务变更——关于行为变化的问题会最先在那里得到解答。
可靠的表格驱动标签打印最佳实践
- 把表格当作数据库。 表头稳定,一行一条记录,数据范围内没有合并单元格。合并单元格是“为什么第 47 行打印错了东西”的头号原因。
- 打印前先验证。 用表格公式或 Python 字段脚本捕获空条形码或格式错误的值,而不是在物理标签上才发现。
- 给布局做版本管理。 设计变更不应悄悄破坏现有的表格映射。保持绑定显式,并用实时行的样本测试布局。
- 测试与生产分离。 用第二张表或一个过滤列,让实验远离打印机。
- 在多用户团队中使用角色。 LPSNG 的企业功能——多用户、多区域、多设备——让你控制谁编辑布局、谁只能打印,从而彻底消除误编辑这一类故障。
常见问题
从 Google Sheets 自动打印标签需要写代码吗?
不需要。Next Generation Label Printing System 的 Google Sheets 插件替你处理连接和任务提交。你安装插件,通过 OAuth2 注册流程授权一次,把表格列映射到标签字段,然后打印。针对 Web 服务 API 编写自己的集成是可行的,但并非必需。
我可以打印到热敏打印机,还是只能输出 PDF?
LPSNG 可以把标签渲染为 PDF 或 PNG,也可以把任务发送到已配置的打印机进行直接打印。插件让你选择输出目标,所以你可以先预览为 PDF,然后用同一布局打印到热敏打印机。
如果我的表格有几百行会怎样?
插件会把这一批提交给 LPSNG Web 服务,后者把每一行渲染成一张标签并将任务排队。你可以在任务队列中监控进度。对于无人值守或极大量的运行,LPSNG Player 命令行引擎专为处理“包加数据”输入并输出 PDF、PNG、JSON 或直接打印而设计。
这在 Raspberry Pi 上的嵌入式版本上能用吗?
能。嵌入式版本在 Raspberry Pi 这样的单板计算机上运行完整的 LPSNG,连接 Google Sheets 插件使用的是同样的 OAuth2 注册和 Web 服务接口。这对于需要独立于云版本运行的打印站很有用。
结论
电子表格已经是你的产品数据库、价格表和发货清单。把它变成标签打印机只需要一次性连接:安装插件,授权一次,把列映射到字段,选择输出目标。之后,从 Google Sheets 自动打印标签就是点一下——而不是导出、导入再重新对齐。
下一步: 从集成页面安装 Google Sheets 插件,在标签工作室中构建一个布局,然后从一张五行测试表打印你的第一批表格驱动标签。
