企微智能表格

Other

企业微信智能表格全流程自动化操作技能。触发词:企微智能表格、智能表格、工作任务表格、费用申请表格、视频制作表格、企微表格、新建任务、添加任务、添加费用、费用申请、报销、视频制作流程、工作流、任务提醒、到期提醒、巡检、企微工作流。 任何涉及在企微智能表格中新增/查询/提醒/通知的操作,均触发此技能。

Install

openclaw skills install wecom-smartsheet

企微智能表格 操作技能

企业微信智能表格全流程自动化操作技能。 将用户的自然语言请求转化为企微智能表格写入 + 群机器人通知 + 本地追踪 + 定时提醒的完整闭环。


一、系统架构总览

1.1 三大智能表格

表格名称标识符说明
费用申请系统expense费用报销全流程审批
工作任务系统task工作任务分配与进度追踪
视频制作工作流video视频制作多阶段协同

配置方式:首次使用前,需将企微智能表格的 Webhook Key 填入下方的占位符。Webhook Key 在企微文档 → 智能表格 → 更多 → Webhook 中获取。

表格写入 URL 格式https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={Webhook_Key}

1.2 三个群机器人

群名称对应表格说明
费用审批群expense费用申请通知与审批提醒
工作任务群task任务分配与到期提醒
视频制作群video视频制作进度通知

群通知 URL 格式https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={Bot_Key}

1.3 表格与群严格一一对应

费用申请系统 (expense) ──→ 费用审批群 (expense bot)
工作任务系统 (task)     ──→ 工作任务群 (task bot)
视频制作工作流 (video)  ──→ 视频制作群 (video bot)

⚠️ 绝对不能搞混! 每个表格的通知必须发到它自己对应的群,不能统一发到所有群。


二、四步闭环 SOP(标准操作流程)

这是核心规则。每次操作企微智能表格,必须完整执行以下四步,缺一不可。

步骤操作执行方式说明
① 写入表格构造 payload,POST 到表格 Webhookcurl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={key}" -H "Content-Type: application/json" -d '{payload}'payload 中 add_records[0].values 的 key 是字段 ID,value 按字段类型传值
② 群通知发送 Markdown 消息到对应群机器人curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={bot_key}" -H "Content-Type: application/json" -d '{markdown_payload}'必须发到该表格对应的群,不能发错
③ 本地追踪同步写入 wecom_deadline_tracker.json调用 Python 脚本 track_record() 或手动追加 JSON记录到期信息,供每日巡检脚本读取
④ 设置提醒创建一次性定时提醒,到期前发到对应群WorkBuddy automation_update 工具,scheduleType="once",prompt 中用 curl 调群机器人提醒消息发到对应群

2.1 步骤①详细:写入表格

请求格式:

{
  "add_records": [
    {
      "values": {
        "字段ID": "字段值",
        "字段ID": "字段值"
      }
    }
  ]
}

curl 完整示例(工作任务系统):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={TASK_WEBHOOK_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "add_records": [{
      "values": {
        "ftQMc5": "查看公司写字楼附近的商业情况",
        "fMAfWQ": [{"user_id": "USER_ID_1"}],
        "fn8TJd": [{"user_id": "USER_ID_2"}],
        "fsaQFC": [{"user_id": "USER_ID_3"}],
        "fSP1Xe": "1777353600000",
        "fIH343": "1777447060000",
        "fp6iMs": [{"text": "未开始"}],
        "f9ftBb": 0
      }
    }]
  }'

成功响应:

{"errcode": 0, "errmsg": "ok", "add_records": [{"record_id": "recXXXXXX"}]}

失败响应示例:

{"errcode": 40001, "errmsg": "invalid userid"}

2.2 步骤②详细:群通知

Markdown 消息格式:

{
  "msgtype": "markdown",
  "markdown": {
    "content": "**📌 新任务通知**\n\n> 任务:<font color=\"info\">任务名称</font>\n> 责任人:XXX\n> 截止日期:2026-05-01\n> 状态:未开始\n\n请及时处理!"
  }
}

curl 完整示例(工作任务群):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={TASK_BOT_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "msgtype": "markdown",
    "markdown": {
      "content": "**📌 新任务通知**\n\n> 任务:<font color=\"info\">查看公司写字楼附近的商业情况</font>\n> 责任人:XXX\n> 协作人:XXX\n> 知会人:XXX\n> 截止日期:2026-05-01\n> 状态:未开始\n\n请及时处理!"
    }
  }'

通知模板(按表格类型):

表格类型标题 emoji标题前缀关键字段
expense💰费用审批通知报销描述、金额、申请人、付款截止
task📌工作任务通知任务描述、责任人、协作人、知会人、截止日期
video🎬视频制作通知视频标题、当前阶段、负责人、截止日期

2.3 步骤③详细:本地追踪

每次成功写入表格后,需将关键信息追加到本地 JSON 文件。

文件路径{WORKDIR}/wecom_deadline_tracker.json

记录格式:

{
  "table": "task",
  "record_id": "recXXXXXX",
  "name": "任务名称",
  "deadline": "2026-05-01",
  "responsible": "userid",
  "data": { ... },
  "tracked_at": "2026-04-27T16:30:00",
  "notified": false
}

可用 Python 函数(来自 wecom_smartsheet.py):

  • track_record(table, data, record_id) — 自动追加记录
  • load_tracker() — 读取所有追踪记录
  • get_upcoming_deadlines(days=3) — 获取未来 N 天内到期的记录

2.4 步骤④详细:设置提醒

使用 WorkBuddy 的 automation_update 工具创建一次性定时任务。

参数:

  • mode: "suggested create"
  • name: "任务提醒-{任务名称}"
  • scheduleType: "once"
  • scheduledAt: ISO 8601 格式,如 "2026-04-28T09:00"
  • status: "ACTIVE"
  • prompt: 包含 curl 命令,直接调群机器人发送提醒

prompt 模板:

发送一条提醒消息到工作任务群。执行以下命令:
curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={TASK_BOT_KEY}" -H "Content-Type: application/json" -d '{"msgtype":"markdown","markdown":{"content":"**⏰ 任务提醒**\n\n> 任务:<font color=\"warning\">{任务名称}</font>\n> 责任人:{责任人}\n> 截止日期:{截止日期}\n> 状态:{状态}\n\n请尽快处理!"}}'
发送完成后简要报告结果。

三、字段映射表(完整)

3.1 费用申请系统(expense)

字段中文名字段 ID字段类型格式说明可选值
报销描述f95bql文本字符串
报销费用类型fSIkwz文本数组[{"text": "选项"}]房租税金、办公用品、差旅费、餐饮费、其他
费用类型fV2Vy0文本数组[{"text": "选项"}]
费用内容ftQMc5文本字符串
金额ftk5Tx文本⚠️ 必须传字符串,如 "4800"
实发工资金额fv0Ji4文本字符串
单据图片ffC9Tb附件Webhook 不支持,传 []
收款户名fQgUks文本字符串
收款人开户银行fFh8FX文本字符串
收款人银行账号fpe6NV文本字符串
财务初审人fMAfWQ人员[{"user_id": "xxx"}]
财务初审意见f2hMiW文本字符串
终审人员fn8TJd人员[{"user_id": "xxx"}]
终审人员意见ff1LL6文本字符串
终审结果fMRZPT文本数组[{"text": "选项"}]同意、驳回、待审批
终审审批时间fs4s7u日期毫秒时间戳字符串
支付账户fBOypp文本数组[{"text": "选项"}]示例账户
银行制单日期fgbqSn日期毫秒时间戳字符串
支付人fbA3YP人员[{"user_id": "xxx"}]
付款截止日期fgeUSZ日期毫秒时间戳字符串
支付人意见f4JIH4文本数组[{"text": "选项"}]已支付、待支付
支付日期fafRRt日期毫秒时间戳字符串
支付凭据fowtyf附件Webhook 不支持,传 []
流程结果fG5K0s文本数组[{"text": "选项"}]已完成、进行中、已取消
终审日期fy8sMG日期毫秒时间戳字符串
审批进度fZPqRZ文本数组[{"text": "选项"}]待初审、初审通过、待终审、终审通过、终审驳回

3.2 工作任务系统(task)

字段中文名字段 ID字段类型格式说明可选值
任务详细描述ftQMc5文本字符串
填写任务最新进展fAUNqS文本字符串
填写时间fJtBHe日期毫秒时间戳字符串
完全责任人fMAfWQ人员[{"user_id": "xxx"}]
任务结果交付给谁fvMIN1人员[{"user_id": "xxx"}]
任务重要紧急分类fLjDXp文本数组[{"text": "选项"}]重要紧急、重要不紧急、紧急不重要、不紧急不重要
任务类型ftk5Tx文本数组[{"text": "选项"}]财务类、市场与销售类、人力资源类、技术类、行政类
任务优先级f8lJy9文本数组[{"text": "选项"}]星标任务(极其重要紧急)、高、中、低
图片far6pU附件Webhook 不支持,传 []
协同任务完成的人fn8TJd人员[{"user_id": "xxx"}]
不参与任务但需要知会的人fsaQFC人员[{"user_id": "xxx"}]
计划开始时间fSP1Xe日期毫秒时间戳字符串
计划结束时间fIH343日期毫秒时间戳字符串
实际开始时间fnmp0N日期毫秒时间戳字符串
实际结束时间fNxWUG日期毫秒时间戳字符串
任务工作小时数f5mcXr数值整数
任务状态fp6iMs文本数组[{"text": "选项"}]未开始、进行中、已完成、已取消
进度f9ftBb数值浮点数,如 00.51
每周回顾任务fOinuX文本数组[{"text": "选项"}]
每月回顾任务furcM5文本数组[{"text": "选项"}]
任务完成总结f2CRNT文本字符串
备注fCpF71文本字符串

3.3 视频制作工作流(video)

字段中文名字段 ID字段类型格式说明可选值
视频类别fIxg8J文本数组[{"text": "选项"}]短视频、长视频、直播、其他
逐字稿文档flj0f9文本字符串(URL)
AI 生成的视频标题fRZCUc文本字符串
逐字稿负责人ftQMc5人员[{"user_id": "xxx"}]
文字稿提供日期ftk5Tx日期毫秒时间戳字符串
视频营销完全责任人fExzxn人员[{"user_id": "xxx"}]
视频生成完全责任人f0WI70人员[{"user_id": "xxx"}]
音频负责人ffFwIh人员[{"user_id": "xxx"}]
音频制作计划完成日期fGP81d日期毫秒时间戳字符串
音频制作实际完成日期fgbWRh日期毫秒时间戳字符串
视频生成负责人fn8TJd人员[{"user_id": "xxx"}]
视频制作计划完成日期faGcmb日期毫秒时间戳字符串
视频制作实际完成日期f8SU87日期毫秒时间戳字符串
后期合成负责人fsPk4D人员[{"user_id": "xxx"}]
后期计划完成日期fRGWEC日期毫秒时间戳字符串
后期实际完成日期fdRqlx日期毫秒时间戳字符串
计划上传发布日期fa4rBU日期毫秒时间戳字符串
发布负责人fQg3so人员[{"user_id": "xxx"}]
实际上传发布日期和时间fh0mD5日期毫秒时间戳字符串
备注和总结fJSKId文本字符串

四、字段格式规范(严格执行)

4.1 类型→格式映射表

字段类型传值格式示例
文本"字符串""查看公司写字楼附近的商业情况"
人员[{"user_id": "xxx"}][{"user_id": "USER_ID"}]
多人员[{"user_id": "A"}, {"user_id": "B"}][{"user_id": "USER_ID_1"}, {"user_id": "USER_ID_2"}]
日期"Unix毫秒时间戳字符串""1777447060000"
文本数组(选择型)[{"text": "选项文本"}][{"text": "未开始"}]
进度数字(浮点)00.51
数值(整数)数字8(工作小时数)
附件[]Webhook 不支持上传附件

4.2 时间戳计算

日期字段必须传 Unix 毫秒时间戳字符串。

计算方法(macOS 终端):

# 将日期转为毫秒时间戳
date -j -f "%Y-%m-%d" "2026-05-01" "+%s000"
# 输出: 1777353600000

Python 方法

from datetime import datetime
ts = str(int(datetime.strptime("2026-05-01", "%Y-%m-%d").timestamp() * 1000))
# ts = "1777353600000"

⚠️ 绝不能手动计算时间戳! 必须用 date 命令或 Python 计算。

4.3 userid 注意事项

⚠️ 传入无效 userid 会导致整条写入失败!

在首次使用前,请在企微通讯录中确认每个成员的 userid。如果不确定某个人的 userid,先移除该人,写入成功后再补。


五、完整操作示例

5.1 新建工作任务(最常用场景)

用户说:"在工作任务表格中新建一个任务,任务描述:查看公司写字楼附近的商业情况,完全责任人:张三,协作人:李四,知会人:王五,2026-05-01 前完成,2026-04-28 提醒"

执行步骤:

① 计算时间戳:

# 计划开始时间(今天)
date -j -f "%Y-%m-%d" "2026-04-27" "+%s000"
# 计划结束时间
date -j -f "%Y-%m-%d" "2026-05-01" "+%s000"

② 写入表格:

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={TASK_WEBHOOK_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "add_records": [{
      "values": {
        "ftQMc5": "查看公司写字楼附近的商业情况",
        "fMAfWQ": [{"user_id": "USER_ID_1"}],
        "fn8TJd": [{"user_id": "USER_ID_2"}],
        "fsaQFC": [{"user_id": "USER_ID_3"}],
        "fSP1Xe": "1742697600000",
        "fIH343": "1777353600000",
        "fp6iMs": [{"text": "未开始"}],
        "f9ftBb": 0
      }
    }]
  }'

③ 群通知(工作任务群):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={TASK_BOT_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "msgtype": "markdown",
    "markdown": {
      "content": "**📌 新任务通知**\n\n> 任务:<font color=\"info\">查看公司写字楼附近的商业情况</font>\n> 责任人:张三\n> 协作人:李四\n> 知会人:王五\n> 截止日期:2026-05-01\n> 状态:未开始\n\n请及时处理!"
    }
  }'

④ 本地追踪: 调用 track_record("task", data, record_id)

⑤ 设置提醒:automation_update 创建一次性定时任务:

  • scheduledAt: "2026-04-28T09:00"
  • prompt: 包含 curl 命令调工作任务群机器人发送提醒

5.2 新建费用申请

① 写入表格(费用申请系统):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={EXPENSE_WEBHOOK_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "add_records": [{
      "values": {
        "f95bql": "4月办公室租金",
        "fSIkwz": [{"text": "房租税金"}],
        "ftk5Tx": "4800",
        "fMAfWQ": [{"user_id": "USER_ID"}],
        "fgeUSZ": "1777353600000"
      }
    }]
  }'

② 群通知(费用审批群):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={EXPENSE_BOT_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "msgtype": "markdown",
    "markdown": {
      "content": "**💰 费用审批通知**\n\n> 报销描述:<font color=\"info\">4月办公室租金</font>\n> 费用类型:房租税金\n> 金额:<font color=\"warning\">¥4800</font>\n> 申请人:XXX\n> 付款截止:2026-05-01\n\n请审批!"
    }
  }'

③ 本地追踪 + ④ 设置提醒:同上

5.3 新建视频制作任务

① 写入表格(视频制作工作流):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={VIDEO_WEBHOOK_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "add_records": [{
      "values": {
        "fIxg8J": [{"text": "短视频"}],
        "fRZCUc": "AI创业入门5步法",
        "ftQMc5": [{"user_id": "USER_ID"}],
        "f0WI70": [{"user_id": "USER_ID"}],
        "faGcmb": "1777353600000"
      }
    }]
  }'

② 群通知(视频制作群):

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={VIDEO_BOT_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "msgtype": "markdown",
    "markdown": {
      "content": "**🎬 视频制作通知**\n\n> 视频标题:<font color=\"info\">AI创业入门5步法</font>\n> 类别:短视频\n> 逐字稿负责人:XXX\n> 计划完成日期:2026-05-01\n\n请及时推进!"
    }
  }'

六、每日巡检自动化

6.1 配置方式

  • 运行时间:每日 09:00
  • 执行内容:运行 wecom_daily_check.py
  • 工作目录:本技能所在目录

6.2 巡检逻辑

  1. wecom_deadline_tracker.json 读取所有追踪记录
  2. 筛选未来 3 天内到期的记录
  3. 按表格类型分组(task/video/expense)
  4. 逐组发送到对应群:
    • 有到期记录 → 发送到期提醒(🔴/🟡/🟢 标识紧急程度)
    • 无到期记录 → 发送日常摘要

6.3 巡检消息模板

有到期记录时:

**📌 工作任务提醒**
> 日期:2026-04-28

🔴 **任务名称**
   截止:2026-05-01(剩余3天)
   责任人:XXX

_定时巡检_

无到期记录时:

**📌 工作任务提醒**
> 日期:2026-04-28

> 任务追踪记录:X 条
> 即将到期:0 条(3天内)

> 今日暂无紧急到期任务 ✅

_定时巡检_

紧急程度标识:

  • 🔴 剩余 ≤1 天
  • 🟡 剩余 ≤2 天
  • 🟢 剩余 ≤3 天

七、踩坑记录与注意事项

7.1 已踩过的坑

#问题原因解决方案日期
1金额字段写入失败费用表格的 ftk5Tx(金额)是文本类型,传了数字金额必须传字符串,如 "4800" 而非 4800
2三个群收到相同通知巡检脚本只发一条通用摘要到一个群必须按表格类型分别发到对应群,每个群有专属内容
3wecom-cli 写入失败CLI 的 smartsheet_add_records 需要 sheet_id 且参数复杂放弃 CLI,直接 POST Webhook 更简单可靠
4Bot 读取返回 851003Bot 未被授权文档访问权限用本地 tracker 文件替代读取,需在企微管理后台添加授权才能启用
5xxx userid 无效该用户 ID 在企微中不存在或格式错误移除无效 userid,只传已验证有效的 ID

7.2 操作注意事项

  1. 绝对不要用 wecom-cli 写入智能表格。直接 POST Webhook 是唯一推荐方式。
  2. 绝对不要手动计算时间戳。用 date -j 命令或 Python datetime 计算。
  3. 金额字段永远传字符串。即使看起来像数字,也必须用引号包裹。
  4. 人员字段必须是数组格式。即使只有一个人,也要用 [{"user_id": "xxx"}]
  5. 文本数组字段必须是数组格式。即使只有一个选项,也要用 [{"text": "选项"}]
  6. 无效 userid 会导致整条记录写入失败。不确定的 userid 先跳过。
  7. 每个表格的通知只发到它对应的群。task→工作任务群,expense→费用审批群,video→视频制作群。
  8. 附件字段无法通过 Webhook 上传。传 [] 即可。
  9. 四步闭环必须完整执行。写入→通知→追踪→提醒,缺一不可。
  10. 日期字段传毫秒时间戳字符串。注意是字符串格式,不是数字。

八、工具链与脚本

8.1 脚本文件

文件功能
references/wecom_smartsheet.py包含所有字段映射、格式转换、Webhook 推送、群通知、本地追踪函数
references/wecom_daily_check.py读取 tracker,按表格类型分组发送到期提醒到对应群
wecom_deadline_tracker.jsonJSON 格式的到期追踪记录
Token 存储所有 Webhook URL 和群机器人 URL 的集中存储(本地,不对外发布)

8.2 CLI 工具

  • wecom-cli(如已安装):不推荐用于智能表格写入(参数复杂且需 sheet_id)
  • 推荐方式:直接 curl POST Webhook

8.3 Python 可用函数(from wecom_smartsheet.py)

# 推送到表格
push_to_table(table, data, track=True)

# 构造 Webhook payload
build_webhook_payload(table, data)

# 发送群通知
send_notification(notify_type, title, fields, mention_list=None)

# 场景化通知
notify_expense_pending(description, amount, deadline, applicant, reviewer)
notify_task_deadline(task_name, responsible, deadline, priority, progress)
notify_video_milestone(video_title, stage, deadline, responsible)

# 本地追踪
track_record(table, data, record_id)
load_tracker()
save_tracker(records)
get_upcoming_deadlines(days=3)

# 日期转换
date_to_timestamp(date_str)  # "2026-05-01" → "1777353600000"

# 字段值自动转换
convert_field_value(table, field_title, value)

九、Markdown 通知格式规范

9.1 企微群 Markdown 支持范围

企微群机器人 Markdown 仅支持以下语法:

  • 粗体**文本**
  • 引用:> 文本
  • 字体颜色:<font color="warning">文本</font>(支持 info/warning/comment
  • 链接:[文本](URL)

不支持:标题(#)、代码块(```)、表格、图片、列表等。

9.2 颜色值

颜色关键字显示效果适用场景
info绿色正常信息、任务名称
warning橙红色截止日期、金额、紧急提醒
comment灰色进度、状态等辅助信息

十、首次配置指南

克隆此技能后,按以下步骤配置凭证:

  1. 在企微智能表格中获取三个表格的 Webhook Key:

    • 企微文档 → 智能表格 → 更多 → Webhook
    • 将 Key 填入脚本的对应位置
  2. 在企微群中添加群机器人,获取群机器人 Webhook Key:

    • 群设置 → 群机器人 → 添加机器人
    • 记录每个群对应的 Key
  3. 配置 userid 映射:

    • 在企微通讯录中确认每个成员的 userid
    • 建立中文名→userid 的映射表

十一、执行检查清单

每次操作前,用此清单自查:

  • 确定目标表格类型(expense / task / video)
  • 字段 ID 是否正确(查本文第三章映射表)
  • 人员字段是否用 [{"user_id": "xxx"}] 格式
  • 日期字段是否用毫秒时间戳字符串(用命令计算,不手算)
  • 金额字段是否传了字符串(不是数字)
  • 文本数组字段是否用 [{"text": "选项"}] 格式
  • userid 是否在已验证列表中(不在则先跳过)
  • 通知是否发到了正确的群(对照对应关系)
  • 本地 tracker 是否已更新
  • 提醒自动化是否已创建
  • 四步闭环是否全部完成