zplCloud Blog
从 Google Sheets 打印流程到印出的标签
打印机 → 设计 → 电子表格 → Print View。附上真正能完成身份验证的 Apps Script。
从你已经拥有的数据源开始
大多数标签项目并不是卡在打印机或设计上,而是卡在数据上:必须有人拥有商品清单,而"我们会连接 ERP"往往变成一个六周的工单。
所以从 Google Sheets 开始。它是一个真正的数据源,办公室里每个人都能编辑,从它到一张印好的标签路径很短。等 ERP 连接最终就绪时,标签和打印路径都不变——只是数据行的来源变了。
这就是整条链路,端到端。
1 - 打印机上网并连接
开箱、装介质、开机、联网,然后用 Weblink 一行命令或 CLI agent 将它连接到 zplCloud,并应用打印机配置文件,使浓度和速度与介质匹配。speed-run 那篇文章有逐步说明;预留 10 分钟。
2 - 设计标签
在设计器中,从模板或空白开始,添加每张标签变化的字段:商品编号、名称、数量、目的地。让 binding 的名称与电子表格的列标题完全一致——这一个决定就省掉了后面所有的映射工作。
用 PNG、PDF 或 SVG 检查预览。它由与服务端生成 ZPL 相同的引擎渲染,因此不是近似效果。
记下设计 ID。它是 <名称>.<id>,例如 shipping-label.42;调用 API 时需要它。
3 - 电子表格
每张标签一行,每个 binding 一列:
| artikel_nr | name | menge | ziel |
|---|---|---|---|
| 4006381333930 | Cable tie 200 mm | 50 | Ramp 4 |
| 4006381333947 | Cable tie 300 mm | 25 | Ramp 2 |
路径 A - 无需代码。 将行复制到设计器的 测试数据 选项卡或批量作业中并打印。对每周打印已足够,完全零设置。
路径 B - Apps Script。 表格成为触发器。用 API 密钥通过公共 API 渲染:
// 扩展程序 → Apps Script。渲染当前行并返回 ZPL。
const API_KEY = 'sk_zplcloud_…'; // 平台中的 API 选项卡
const DESIGN_ID = 'shipping-label.42'; // "<名称>.<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];
// 请求体是一个记录数组:键必须匹配设计的 binding。
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 // 否则 4xx 会在你能读取消息之前抛出
});
if (res.getResponseCode() !== 200) throw new Error(res.getContentText());
return res.getContentText(); // ZPL
}
需要绕开的两个限制,都由 API 强制执行:
- 每次请求 500 条记录 - 把更大的打印拆成多个批次。
- 请求体 1 MB - 对于正常标签数据,那意味着数千行,所以记录上限先触发。
添加一个自定义菜单(onOpen → SpreadsheetApp.getUi().createMenu(...)),你的同事就能在表格自己的菜单栏里得到一个打印入口。
4 - 把 ZPL 送到打印机
渲染和打印是刻意分开的两步——你可以现在渲染、稍后打印,或渲染一次在三个站点打印。
- 从平台: 设计一键打印到 Weblink 或 agent 打印机,无需脚本。
- 从你自己的代码: 通过 agent 经 TCP 9100 把 ZPL 发送给打印机,或交到操作员机器上的 CloudToBrowserPrint。
- 给个人: 完全跳过脚本,给他们一个 Print View(下一步)。
5 - 为真正打印的人准备 Print View
从设计创建 Print View,把 menge 和 ziel 标为可编辑,锁定 artikel_nr,并用表格数据或查询支撑该视图。分享 URL,或打印二维码贴在打印机旁。
操作员在手机上打开链接,把商品条码扫进字段,检查实时预览,点打印。无需 app、无需培训。
整条链路
| 阶段 | 内容 | 时间 |
|---|---|---|
| 1 | 打印机 + Weblink/agent + 配置文件 | ~10 分钟 |
| 2 | 设计,binding 命名同列名 | ~5 分钟 |
| 3 | 电子表格,可选 Apps Script | ~5 分钟 |
| 4 | 打印路径(平台、API 或 Print View) | ~2 分钟 |
| 5 | 操作员扫描并打印 | 秒 |
为什么电子表格是站得住脚的选择
这不是一个需要你道歉的妥协。表格自带版本控制、评论、按用户访问和审计跟踪,而且没人需要上手培训。它真正的限制是并发和引用完整性——当两个人在同一班次编辑同一行,或商品清单必须与 ERP 完全一致时,那就是迁移到 data hub、直接查询 SQL Server 或 MongoDB 的信号。
迁移范围是受限的:同样的设计、同样的 binding、同样的 Print View。只有数据源变了。