快速回答:经 HTTP 分页取回每一条提交,用汇总接口代替原始行,导出 CSV——把表单数据接进表格、仪表盘和 AI Agent 的上下文。

存下提交只是半个后端。决定数据有没有用的,是把它取回来的那一半——给人翻、给脚本算、给仪表盘画、给 Agent 读。

一个 FormLM 接口给你三个出口,选对出口基本就完成了设计。下面把整套工具摊开讲:哪些循环和调度,能让"攒着的数据"变成"干活的数据"。

三个出口

同一份数据,三种形态。周一早上"工作坊反响怎么样"是一次 CSV 打开;每晚同步进表格存档的是一个查询循环;常驻的结果挂件则是一次 summary 调用加一张雷达图。

安全地把所有记录翻完

查询接口是分页的,所以正确姿势是一个"短页即停"的循环,而不是硬编码"取第 5 页碰运气"。两行 bash 加 jq,就能把全量历史拉到本地文件:

# 拉取所有已存记录——一旦某页不足请求数就停
page=1; out=all.jsonl; : > $out
while :; do
  resp=$(curl -s "https://formlm.me/api/v3/share/<your-token>/query?page=$page&size=1000")
  echo $resp | jq -c '.records[]?' >> $out
  n=$(echo $resp | jq '.records | length')
  [$n -lt 1000 ] && break
  page=$((page+1))
done

换成 Python 或平台脚本,也就多几行,思路相同。批量拉取就把 size=1000 顶格用;交互看板则把它调小,别让一条慢记录卡住视图。如果只要计数和分布,连循环都省了——/summary 早就在服务器端把这笔账算好了。

不动原始行,先拿汇总

仪表盘很少真的需要每条提交——它要的是"本周 342 份,三个维度均值 3.8 / 2.9 / 4.1,分档占比 12% / 41% / 47%"。summary 接口卖的就是这个取舍:一次 GET,不分页、不用拼接。低刷新率的挂件直接对准它,整层报表就值一次 fetch 加一张图。

字段漂移是特性——读出防御性

因为 payload 里的陌生键会自动建列,一个线上接口的字段集是随页面演进而生长的。旧记录对新键没有值,这不是脏数据,是历史。三个习惯让管道稳着跑:

定时导出:表格和 BI 都要吃

对住在表格里的团队,把查询循环挂进每晚 cron,写成 CSV 或往表格追行,让表单退化成无聊的基础设施。小需求还有个更简单的档位——数据后台里手动导出 CSV——所以量真到了才值得自动化。至于能直连 HTTP 数据源的 BI 工具,查询接口跟它们说的是同一种语言:带稳定记录 ID 的 JSON。

把结果喂回给 Agent

最让人意外的那个出口:Agent 也能消费 Agent 产出的东西。把一个接口的 ?help 贴进对话,它就有了 schema;灌一份 /summary 的 JSON,它能把这一周的结果讲成人话;把查询循环的输出给它,它就能写报告。存储不再是表单生命的终点,而是一个分析闭环的起点——当初收数据的那个 URL,现在负责解释数据。

"表单本来就是一条已经建好一级台阶的数据管道。真正有意思的工程发生在出口处——把同一批记录同时递给人、表格、仪表盘和 Agent,还要它们四个对事实的理解始终一致。"

🛠️ 给你的数据三个出口

每个发布后的表单都全部自带——没有额外配置这一步:

  • 查询接口——分页 JSON,一页最多 1,000 条记录
  • 汇总接口——服务器端算好的聚合,一次 GET
  • 数据后台 + CSV——给人用的那个出口,默认就在
  • ?help 自述文档——当前字段清单,Markdown,Agent 读得懂
发布一张表单,拉回第一页 →

✅ 重点结论

  • 存储只是半个后端——出口决定数据是不是在替你干活
  • 查询循环翻到短页即停:批量顶格 1000,交互调小
  • 只要聚合就用 /summary:一次 GET 胜过下载全部
  • 自动建列意味着 schema 会生长——缺失键当 null,用 ?help 做 diff
  • 导出按量级升级:手动 CSV 是默认,cron 才是自动化
  • 存数据的同一个接口,也能把你的数据讲给 Agent 听

日常产出的是基准报告和复盘而不是脚本?市场营销专区和培训效果评估专区教你把同样的聚合数字变成客户面前的交付物。

常见问题

怎么用程序把所有提交下载下来?

用循环调查询接口:GET /query 带上 page=N 与 size=1000,把每页记录追加落盘,某页返回条数不足请求数就停。整个模式就这么多——没有游标状态要维护。

API 调用按次收费吗?

不按次。发布表单以及通过接口收取、查询提交都在免费套餐内,没有按调用计费的环节;付费套餐抬高的是容量上限并增加团队功能。

加了字段,怎么让脚本不跟着崩?

读的时候防御一点:遍历键的并集,缺的当 null。在接口 URL 后加 ?help 就能拿到当前字段的 Markdown 清单,把它放进同步任务里做 diff,新列出现时不会给你惊喜。

仪表盘能直接读数据吗?

能。读端也开着 CORS,浏览器端的挂件可以直接打 query 和 summary 两个接口。聚合类磁贴优先用 /summary:一次 GET,不用分页,账已经在服务器端算完。

← 上一篇:MCP 全流程实操 接着看文档:Data API 总览 →