WorkBuddy 实战:用 Playwright 批量填写飞书多维表格,告别手工录数据

举报
码事漫谈 发表于 2026/09/16 17:09:47 2026/09/16
【摘要】 一、痛点做技术评审、需求验收、问卷汇总时,经常要把几十到上百条结构化记录一条条手动填进飞书多维表格。字段多、容易填错、中途断了还得重来。纯手工点,一百条大概半天,还不敢保证不出错。把这件事交给 WorkBuddy,让它驱动 Playwright 接管已登录的飞书网页,按数据自动填、自动提交,人只负责单条验证和抽查核验,半天活压缩到几分钟。 二、方案三件套:WorkBuddy:作为 Agen...

一、痛点

做技术评审、需求验收、问卷汇总时,经常要把几十到上百条结构化记录一条条手动填进飞书多维表格。字段多、容易填错、中途断了还得重来。纯手工点,一百条大概半天,还不敢保证不出错。

把这件事交给 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.typedelay),必要时在两条之间 sleep

七、隐私与安全

这类脚本跑在本机、自己的登录态上,安全边界要守住:

  • 凭据不落盘:飞书登录态靠 CDP 复用,脚本里不写 token、不导 cookie 文件。
  • 数据本地化:待填数据放本地 json,不传任何外部服务;分享示例时务必脱敏,用占位符代替真实业务数据。
  • 不暴露来源方信息:对外分享脚本或案例时,去掉表格真实地址、内部任务编号、人名、公司标识,只留通用方法。
  • 用完关调试端口:跑完停掉调试版 Edge,别留 9222 端口常开。

八、小结

WorkBuddy + Playwright + CDP 把手工录百条表从半天压到几分钟,人只盯验证。核心是复用登录态省去扫码、单条验证防脏数据、截图留证可追溯。评审、验收、汇总类重复录入都能套这个骨架。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。