Skip to main content

Airtable 自动化踩坑记:扫码入库的最后一公里

3 min 465 words

Airtable 自动化踩坑封面

Barcode 字段看起来是文本,Automation 里就是不认。踩完这个坑,样品进出库系统终于真正闭环了。


背景:一张主表用了大半年,现在要升级

鞋厂样品管理,我用 Airtable 做了大半年。

最初的架构很简单——一张样品主档案,每双鞋一条记录,进库出库归还都直接在主表里操作。能用,但问题越来越明显:

  • 同一双鞋的历史动作混在一条记录里,看不清
  • 状态靠手动更新,漏改是常态
  • 想加位置管理,没法扩展

所以最近开始升级,把原来一张表的逻辑拆成三层:

  • 样品主档案:每双鞋的身份证,只记当前状态和位置
  • 样品流转记录:所有进出库动作的流水账,扫码的唯一入口
  • 库存位置记录:样品室、展会区、客户寄样区……位置字典

核心原则确立:扫码只写流水表,主档案由 Automation 自动更新。

扫码脚本早就跑通了。但最关键的一环——Automation 怎么把流水记录自动匹配到主档案——卡住了。


目标:这套逻辑不复杂

理想中的自动化流程是这样的:

扫码 → 流水表新增记录 → Automation 触发

                    去主档案找同一个条码
                         /          \
                      找到了         没找到
                        │               │
                  关联已有记录      新建一条主档案
                        │               │
                        └──────┬────────┘

                        更新流转记录状态

用 Airtable Automation 的 Find records + 条件判断 + Update/Create record 就能实现。配置思路清晰,动手——然后卡了。


撞墙:肉眼一模一样,Automation 不认

按直觉配好:

Trigger:样品流转记录表有新记录创建时

Action 1 — Find records

  • 在「样品主档案」里搜索
  • 条件:Barcode(条码) is 触发记录的 Barcode

If 找到了 → 关联 link,更新状态
If 找不到 → 新建主档案

跑起来——找不到,永远找不到。

两个表里的条码写的一样:FC6177401101。肉眼比对,没区别。换了几种条件写法,还是每次都走进”找不到”的分支,狂建重复记录。

排查了好几轮,怀疑过触发器没有正常触发、字段引用错了、过滤条件写反了……都不是。


转折:这不是配置问题,是字段类型问题

试了四五种写法都不行,开始意识到:这不是配置问题。

把问题扔给 AI,但这次换了一种方式提问:

“你别瞎猜,去 Airtable 官方和相关网站搜索一下,这种跨表 Barcode 字段匹配的自动化应该怎么设置。”

让它查,不让它猜。

AI 查完之后,一句话点破了:

Airtable 的 Barcode 字段不是普通文本字段,它是一个对象。

在表格界面你看到的是一串数字,但在 Automation 的 Find records 比对逻辑里,处理的是”Barcode 对象 vs Barcode 对象”,不是”文本 vs 文本”。两个长得一模一样的条码,在 Automation 眼里不是同一个东西。


解法:两条路,选一条

解法 A:直接改字段类型(我用的,更干净)

把两个表的 Barcode 字段类型从「Barcode」改成「Single line text」。

操作步骤:

  1. 打开「样品流转记录」表,点击 Barcode 字段 → 字段设置
  2. 把字段类型从 Barcode 改成 Single line text → 保存
  3. 打开「样品主档案」表,同样操作 Barcode(条码) 字段
  4. 回到 Automation,Find records 的条件不用改,直接生效

改完之后,两边都是纯文本字符串,Find records 的比对就通了。原有数据不受影响,字段里的条码值完全保留。

注意:改成 Single line text 之后,这个字段就不再支持扫码摄像头直接录入了。如果你的团队用手机摄像头扫码录入,要考虑这个影响。


解法 B:加公式字段做桥接(保留 Barcode 字段)

如果需要保留 Barcode 字段的扫码功能,可以不改原字段,改为在两边各加一个 Formula 字段。

第一步:在「样品流转记录」表新增字段

字段名类型公式
BarcodeTextFormula{Barcode} & ""

第二步:在「样品主档案」表新增字段

字段名类型公式
BarcodeTextFormula{Barcode(条码)} & ""

第三步:修改 Automation 的 Find records 条件

把比对条件从:

Barcode(条码) is [触发记录的 Barcode]

改成:

BarcodeText is [触发记录的 BarcodeText]

用文本字段比文本字段,绕过 Barcode 对象的坑。


完整 Automation 配置(以解法 A 为例)

Trigger:When a record is created

  • 表:样品流转记录_SampleMovementTxn
  • 附加过滤条件:
    • Barcode is not empty
    • 样品 is empty

为什么要加附加过滤? 防止两种情况触发多余的自动化:

  1. 扫了空条码的记录——Barcode 为空,直接跳过
  2. 已经关联过主档案的记录——「样品」字段不为空,跳过,避免重复触发

Action 1:Find records

配置项
样品主档案_SampleMaster
Find records based onCondition
条件Barcode(条码) is 触发记录的 Barcode
Maximum record limit1

limit 设 1 就够,找到第一条即可,避免多条记录带来歧义。


Action 2:If Records Airtable record ID is empty(条码在主档案里不存在)

这里用 record ID 是否为空 来判断有没有找到记录——这是 Airtable 官方推荐的做法,比判断 Records length 更可靠。

子 Action 1:Create record

  • 表:样品主档案_SampleMaster
  • 字段:Barcode(条码) = 触发记录的 Barcode

子 Action 2:Update record

  • 表:样品流转记录_SampleMovementTxn
  • Record ID:触发记录的 Airtable record ID
  • 字段:
    • 样品 = Create record 的 Airtable record ID(通过 + 菜单选上一步的输出)
    • 处理状态 = 已新增主档案

关键点样品 字段的来源必须选 Create record 的输出,绝对不能选 Find records 的输出——Find records 在这条分支里是空的,选了会关联失败。


Action 3:Otherwise if Records Airtable record ID is not empty(找到了匹配)

Update record

  • 表:样品流转记录_SampleMovementTxn
  • Record ID:触发记录的 Airtable record ID
  • 字段:
    • 样品 = Find records 的 Airtable record ID
    • 处理状态 = 已匹配主档案

验证:两条分支都跑通了

配置完成当天,打开流转表看历史记录——「处理状态」里同时出现了「已新增主档案」和「已匹配主档案」两种值。

两条分支都跑过了,不是纸上谈兵。

建议手动测三个场景确认没问题:

场景操作预期结果
扫已有条码扫一个主档案里已有的条码流转记录关联到已有主档案,处理状态:已匹配主档案
扫新条码扫一个主档案里没有的条码自动新建主档案,流转记录关联到新建记录,处理状态:已新增主档案
重复扫描同一条码连扫两次第二次触发后,因「样品」字段已不为空,附加过滤拦截,不重复处理

复盘:三个值得记住的经验

1. 字段类型不是装饰,是逻辑

Airtable 有 20 多种字段类型。Barcode、URL、Email、Phone——这些看起来像文本的字段,在 Automation 里不一定当文本处理。遇到跨字段比对,先确认两边类型一致,别假设”看起来一样就是一样”。

2. 给 AI 指令的质量决定输出质量

同样的问题,让 AI 直接给方案,和让 AI 先去查资料再回答——输出差很多。“别猜,去查”这五个字,在这个问题里值了。

3. 判断”有没有找到记录”用 record ID,不用 length

If Records Airtable record ID is empty 是官方推荐写法。Records length 在某些边界情况下不稳定。用 record ID 更可靠。


附:表结构备忘

核心字段作用
样品主档案_SampleMasterBarcode(条码)、当前状态、当前位置样品身份证,记录当前状态
样品流转记录_SampleMovementTxnBarcode、样品(link)、动作类型、处理状态所有进出库动作的流水账,扫码唯一入口
库存位置记录位置名称位置字典

从一张主表凑合用,到三层架构真正闭环——卡在 Automation 最后一公里的那次排查,记在这里。