← 返回
数据分析

Add to Cart from Bitable

从飞书Bitable表格获取商品信息(链接、规格、数量),然后通过浏览器自动化将其加入天猫/淘宝购物车。触发词:加购物车、Bitable商品、批量加购、采购表格。
从飞书Bitable表格获取商品信息(链接、规格、数量),然后通过浏览器自动化将其加入天猫/淘宝购物车。触发词:加购物车、Bitable商品、批量加购、采购表格。
lorpha
数据分析 clawhub v1.0.0 1 版本 99931.9 Key: 无需
★ 0
Stars
📥 1,468
下载
💾 139
安装
1
版本
#latest

概述

从 Bitable 加入购物车

从飞书多维表格读取商品信息,自动添加到淘宝/天猫购物车。

Bitable 表格要求

默认表格:https://somo-tech.feishu.cn/base/UIdIbPe2RaOQ1tsNIhlcB5ilngc

  • app_token: UIdIbPe2RaOQ1tsNIhlcB5ilngc
  • table_id: tblwMnggn0CuboHs

必需字段:

字段名类型说明
--------------------
链接URL商品链接(从 field.link 取值)
采购规格Text要选择的规格文本,必须与页面上的规格选项完全匹配
数量Number购买数量

操作流程

1. 获取待处理记录

feishu_bitable_list_records(app_token, table_id, page_size=20)

筛选出有完整 链接采购规格数量 的记录。

2. 逐个处理商品

对每条记录执行:

2.1 提取信息

  • productUrl = record.fields.链接.link
  • productSpec = record.fields.采购规格
  • productQuantity = record.fields.数量

2.2 打开商品页面

browser.open(profile='openclaw', targetUrl=productUrl)

等待页面加载完成(约 3-5 秒)。

2.3 使用 evaluate 查找并点击规格

由于页面元素可能动态加载,直接使用 snapshot 可能无法找到。建议优先使用 evaluate 查找包含规格文本的元素并点击。

browser.act(profile='openclaw', request={
    kind: 'evaluate',
    fn: `(specText) => {
        // XPath 查找包含文本的元素
        const xpath = "//*[contains(text(), '" + specText + "')]";
        const result = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        for (let i = 0; i < result.snapshotLength; i++) {
            const node = result.snapshotItem(i);
            // 尝试点击,如果失败则向上找 clickable 的父元素
            let target = node;
            while (target && target !== document.body) {
                // 检查常见的可点击标签或属性
                if (['A', 'BUTTON', 'LI'].includes(target.tagName) || target.getAttribute('role') === 'button' || target.className.includes('sku')) {
                    target.click();
                    return true;
                }
                target = target.parentElement;
            }
            // 实在不行点击节点本身
            node.click();
            return true;
        }
        return false;
    }`,
    args: [productSpec]
})

2.4 设置数量

同理,使用 evaluate 找到输入框并修改值:

browser.act(profile='openclaw', request={
    kind: 'evaluate',
    fn: `(qty) => {
        const inputs = document.querySelectorAll('input.text-amount, input.mui-amount-input, input[type=number]');
        for (let input of inputs) {
             // 简单的启发式规则:value 是 1 或不为空
             if (input.value) {
                input.value = qty;
                input.dispatchEvent(new Event('input', { bubbles: true }));
                input.dispatchEvent(new Event('change', { bubbles: true }));
                return true;
            }
        }
        return false;
    }`,
    args: [productQuantity]
})

2.5 点击加入购物车

找到"加入购物车"按钮并点击:

browser.act(profile='openclaw', request={
    kind: 'evaluate',
    fn: `() => {
        const buttons = document.querySelectorAll('a, button, div[role=button]');
        for (let btn of buttons) {
            const text = btn.innerText || btn.textContent;
            if (text && (text.includes('加入购物车') || text.includes('加入购物袋'))) {
                btn.click();
                return true;
            }
        }
        return false;
    }`
})

2.6 确认添加

等待 2-3 秒,检查是否出现成功提示或购物车数量变化。

3. 汇报结果

完成后通过 message 工具发送 Telegram 通知:

message(action='send', channel='telegram', to='telegram:1642489086', message='采购商品已加入购物车:\n- 商品1: ✅\n- 商品2: ✅\n...')

改进点:

  • 不再仅依赖 browser.snapshot 返回的静态文本 ref,而是利用 evaluate 在浏览器上下文中直接执行 DOM 操作,提高对动态页面和复杂结构的适应性。
  • 增加了针对规格选择、数量设置和加购按钮的具体 DOM 查找策略。

示例调用

用户说:"帮我把采购表格里的商品加入购物车"

  1. 读取 Bitable 记录
  2. 对每个有效记录执行加购流程 (优先使用 evaluate 策略)
  3. 汇报结果

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-29 01:20 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

data-analysis

Excel / XLSX

ivangdavila
创建、检查和编辑 Microsoft Excel 工作簿及 XLSX 文件,支持可靠的公式、日期、类型、格式、重算及模板保留功能。
★ 368 📥 140,470
productivity

Feishu Group Mention Responder

lorpha
在飞书群中,当机器人被@提及或接收到直接消息时,自动进行回复。
★ 1 📥 1,186
data-analysis

A股量化 AkShare

mbpz
A股量化数据分析工具,基于AkShare库获取A股行情、财务数据、板块信息等。用于回答关于A股股票查询、行情数据、财务分析、选股等问题。
★ 165 📥 60,020