zplCloud Blog

从 Google Sheets 打印流程到印出的标签

打印机 → 设计 → 电子表格 → Print View。附上真正能完成身份验证的 Apps Script。

1 分钟阅读 zplCloud Team

从你已经拥有的数据源开始

Google Sheets 数据行经 zplCloud 渲染,在 Zebra 打印机上打印成标签

大多数标签项目并不是卡在打印机或设计上,而是卡在数据上:必须有人拥有商品清单,而"我们会连接 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_nrnamemengeziel
4006381333930Cable tie 200 mm50Ramp 4
4006381333947Cable tie 300 mm25Ramp 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 - 对于正常标签数据,那意味着数千行,所以记录上限先触发。

添加一个自定义菜单(onOpenSpreadsheetApp.getUi().createMenu(...)),你的同事就能在表格自己的菜单栏里得到一个打印入口。

4 - 把 ZPL 送到打印机

渲染和打印是刻意分开的两步——你可以现在渲染、稍后打印,或渲染一次在三个站点打印。

  • 从平台: 设计一键打印到 Weblink 或 agent 打印机,无需脚本。
  • 从你自己的代码: 通过 agent 经 TCP 9100 把 ZPL 发送给打印机,或交到操作员机器上的 CloudToBrowserPrint。
  • 给个人: 完全跳过脚本,给他们一个 Print View(下一步)。

5 - 为真正打印的人准备 Print View

从设计创建 Print View,把 mengeziel 标为可编辑,锁定 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。只有数据源变了。

相关

更多文章