学习/Airtable 入门

在 Airtable 中记录交易汇率

创建 Airtable 数据表和定时自动化,在更新参考汇率估值的同时,保留每笔交易最初记录的汇率。

ERexchangerate.dev·Sep 29, 2026·阅读约 7 分钟

分别保存原始数据和最新数据:币种及金额准备好后,只写入一次 Rate at transaction、来源和生效时间。定时自动化则更新 Current rate 及其元数据,避免市场变动改写交易的历史记录。

要点
明确设置 From、To、Amount、原始来源、最新监测结果和错误字段。
记录准备好后,通过自动化保存一次原始汇率及其来源,不再重新计算这些字段。
通过 At scheduled time 自动化更新估值,并保留 source 和 effective_at。
在 Sync status 和 Sync error 中显示失败,不写入零值,也不让旧数据看起来像新数据。
Airtable Free 不支持 Run a script;采用本流程前请确认当前套餐限制。

创建 Transactions 表

创建 Transactions 表,包含以下字段:From、To(single line text);Amount、Rate at transaction、Transaction converted(number);Transaction source、Transaction market session、Transaction effective at;Archived(checkbox);Current rate、Current converted(number);以及 Source、Market session、Effective at、Checked at、Sync status、Sync error。将 Transaction effective at、Effective at、Checked at 设置为日期时间字段,其余元数据和状态字段使用单行文本。创建 Needs FX refresh 视图,筛选未勾选 Archived 的记录,按 Checked at 从旧到新排序,空值排在最前,使后续运行依次处理其他记录。

两组汇率含义不同。Transaction * 字段保存用于会计或审计的交易快照。没有该前缀的当前字段保存供看板或估值使用的新参考观测值。不要用当前值重写原始记录。

保存原始交易汇率

创建 Airtable 自动化,选择 When record matches conditions 触发器:From、To、Amount 已填写,而 Rate at transaction 为空。添加 Run a script,将 mode 设置为 snapshot,传入触发记录的 recordId,然后粘贴下载的脚本。添加名为 exchangerateApiKey 的 Automation secret;脚本通过 input.secret 读取它,没有密钥访问权限的编辑者仍能运行自动化,但看不到密钥值。只有原始汇率为空时,脚本才写入 Rate at transaction、Transaction converted、Transaction source、Transaction market session 和 Transaction effective at。重试时若已有值,所有原始字段都保持不变。

HTTP request · latest ratecopy
GET https://api.exchangerate.dev/v1/latest/{From}?symbols={To}

Authorization: Bearer EXR_KEY_FROM_A_SERVER_SIDE_SECRET
使用 Automation secret
在两套自动化的脚本编辑器 Secrets 区域创建 exchangerateApiKey,保持名称不变。不要把值放进表格字段、URL、共享描述或代码字面量。Airtable 只允许拥有相应密钥权限的用户编辑使用这些密钥的脚本。

定时更新当前估值

创建第二个自动化,选择 At scheduled time 触发器。将 mode 设置为 refresh,留空 recordId,以处理 Needs FX refresh 中的前 25 条记录,并粘贴完整的 Airtable 脚本。每次运行最多发出 25 个 HTTP 请求,低于 Airtable 的 50 次 fetch 限制;每批最多写入 50 条记录。此示例适合小型报表库;更大的表需要规划队列和请求合并。若每天查询 25 个不同货币对,30 天最多约需 750 个 API 请求,另加初始快照和重试。

刷新只更新 Current rate、Current converted、Source、Market session、Effective at 和 Checked at,不会更新任何 Transaction * 字段。HTTP 失败或响应格式错误时,脚本将 Sync status 设为 Error,并保留上次成功取得的当前值。

明确显示失败状态

401 表示需要检查 Automation secret;429 表示需要检查运行频率或账户限制;缺少币种表示货币对无效或不可用。保留上次成功值及其原有 Checked at,并通过 Sync error 向操作人员提供诊断。不要把失败转换为汇率为零的记录。

检查 Airtable 套餐限制

Airtable 的 Run a script 文档介绍了内置 Automation secrets 及编辑权限保护。自动化限制说明 Free 套餐不支持 Run a script,失败的运行也计入用量。报表通常每天刷新即可;提高频率并不能把每日参考汇率变成日内报价。

仅供参考的汇率
这些观测值适合估算、报表和分析。支付或受监管交易必须使用相应服务商提供的可执行报价和结算记录。
ER
exchangerate.dev
面向外汇数据应用开发者的集成指南。

继续阅读

参考汇率 API 入门阅读 Tutorial在 Zapier 中获取汇率阅读 Tutorial将汇率导入 Power BI阅读
更多比较Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
学习在 Next.js 与 TypeScript 中使用汇率用 Python 构建 USD/IDR 汇率提醒用 Go 的 net/http 获取汇率
实时汇率EUR/USDGBP/USDUSD/JPY