WorkBuddy 实战:用 Playwright 批量填写飞书多维表格,告别手工录数据
一、痛点
做技术评审、需求验收、问卷汇总时,经常要把几十到上百条结构化记录一条条手动填进飞书多维表格。字段多、容易填错、中途断了还得重来。纯手工点,一百条大概半天,还不敢保证不出错。
把这件事交给 WorkBuddy,让它驱动 Playwright 接管已登录的飞书网页,按数据自动填、自动提交,人只负责单条验证和抽查核验,半天活压缩到几分钟。
二、方案
三件套:
- WorkBuddy:作为 Agent 接收批量填表任务,自主规划、调工具、跑脚本、产出核验截图。
- Playwright:浏览器自动化,负责定位单元格、输入、点击提交。
- CDP 接管已登录浏览器:用 Edge 的远程调试端口复用已登录的飞书会话,跳过扫码登录。
不用飞书开放 API,是因为很多内部表格没有开放写入权限,或审批流程不允许。浏览器自动化是兜底且通用的解法,任何能手动填的表它都能填。
三、环境准备
关闭所有 Edge 窗口,用调试端口启动(Windows PowerShell):
Get-Process msedge -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" `
--argumentlist "--remote-debugging-port=9222","--user-data-dir=C:\temp\edge-debug"
手动打开飞书网页并登录一次,CDP 会复用这个会话。
在隔离的 Python 环境装 Playwright:
python -m venv .venv && .venv/Scripts/activate
pip install playwright
playwright install chromium
四、核心脚本
逻辑四步:连接 CDP、定位记录行、逐字段填写、提交并截图核验。
from playwright.sync_api import sync_playwright
import json, time
BITABLE_URL = "https://your-feishu-bitable-url" # 替换为你的表格地址
DATA_FILE = "records.json"
def fill_one(page, rec: dict):
page.goto(BITABLE_URL, timeout=60000)
page.click("button:has-text('新增')")
for field, value in rec["fields"].items():
page.locator(f"[data-field='{field}']").click()
page.keyboard.type(value, delay=20)
page.check("input.confirm-checkbox")
page.click("button:has-text('提交')")
time.sleep(1.5)
page.screenshot(path=f"verify_{rec['id']}.png")
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp("http://127.0.0.1:9222")
page = browser.contexts[0].pages[0]
for rec in json.load(open(DATA_FILE, encoding="utf-8")):
fill_one(page, rec)
print("done", rec["id"])
records.json 结构与字段按你的实际表调整:
[
{ "id": "R001", "fields": { "名称": "示例任务A", "评分": "85", "理由": "实现完整" } },
{ "id": "R002", "fields": { "名称": "示例任务B", "评分": "72", "理由": "部分缺失" } }
]
五、防翻车三要点
先单条验证再批量跑。拿第一条数据 dry-run,确认字段映射、提交按钮、确认勾选都对了,再放开循环。错一个选择器,批量就是批量制造脏数据。
每条截图留证。提交后截一张图存本地,事后抽查比对,证明真写进去了、写的是什么。
分批加断点续传。百条以上别一口气跑,按批次分文件,跑完一批核验一批;脚本支持跳过已完成 id,中断后从断点续。
六、常见问题排错
连不上 CDP:端口被占就换 9223,Edge 没真正起来则访问 http://127.0.0.1:9222/json/version 验证,能返回才算成功。
选择器失效:飞书页面会迭代,优先用 has-text / data-field 这类语义定位,少用裸 CSS 层级。
提交后没保存:多半是确认勾选漏了或网络抖动,靠截图留证一眼就能定位。
被限流或弹验证码:降低填写节奏(keyboard.type 加 delay),必要时在两条之间 sleep。
七、隐私与安全
这类脚本跑在本机、自己的登录态上,安全边界要守住:
- 凭据不落盘:飞书登录态靠 CDP 复用,脚本里不写 token、不导 cookie 文件。
- 数据本地化:待填数据放本地 json,不传任何外部服务;分享示例时务必脱敏,用占位符代替真实业务数据。
- 不暴露来源方信息:对外分享脚本或案例时,去掉表格真实地址、内部任务编号、人名、公司标识,只留通用方法。
- 用完关调试端口:跑完停掉调试版 Edge,别留 9222 端口常开。
八、小结
WorkBuddy + Playwright + CDP 把手工录百条表从半天压到几分钟,人只盯验证。核心是复用登录态省去扫码、单条验证防脏数据、截图留证可追溯。评审、验收、汇总类重复录入都能套这个骨架。
- 点赞
- 收藏
- 关注作者
评论(0)