企业微信智能表格全流程自动化操作技能。 将用户的自然语言请求转化为企微智能表格写入 + 群机器人通知 + 本地追踪 + 定时提醒的完整闭环。
表格名称标识符说明费用申请系统expense费用报销全流程审批工作任务系统task工作任务分配与进度追踪视频制作工作流video视频制作多阶段协同
配置方式:首次使用前,需将企微智能表格的 Webhook Key 填入下方的占位符。Webhook Key 在企微文档 → 智能表格 → 更多 → Webhook 中获取。
表格写入 URL 格式: https://qyapi.weixin.qq.com/cgi-bin/wedoc/smartsheet/webhook?key={Webhook_Key}
群名称对应表格说明费用审批群expense费用申请通知与审批提醒工作任务群task任务分配与到期提醒视频制作群video视频制作进度通知
群通知 URL 格式: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={Bot_Key}
text
费用申请系统 (expense) ──→ 费用审批群 (expense bot)
工作任务系统 (task) ──→ 工作任务群 (task bot)
视频制作工作流 (video) ──→ 视频制作群 (video bot)
⚠️ 绝对不能搞混! 每个表格的通知必须发到它自己对应的群,不能统一发到所有群。
这是核心规则。每次操作企微智能表格,必须完整执行以下四步,缺一不可。
步骤操作执行方式说明① 写入表格构造 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 调群机器人提醒消息发到对应群
请求格式:
json
{
"add_records": [
{
"values": {
"字段ID": "字段值",
"字段ID": "字段值"
}
}
]
}
curl 完整示例(工作任务系统):
bash
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
}
}]
}'
成功响应:
json
{"errcode": 0, "errmsg": "ok", "add_records": [{"record_id": "recXXXXXX"}]}
失败响应示例:
json
{"errcode": 40001, "errmsg": "invalid userid"}
Markdown 消息格式:
json
{
"msgtype": "markdown",
"markdown": {
"content": "**📌 新任务通知**\n\n> 任务:<font color=\"info\">任务名称</font>\n> 责任人:XXX\n> 截止日期:2026-05-01\n> 状态:未开始\n\n请及时处理!"
}
}
curl 完整示例(工作任务群):
bash
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🎬视频制作通知视频标题、当前阶段、负责人、截止日期
每次成功写入表格后,需将关键信息追加到本地 JSON 文件。
文件路径: {WORKDIR}/wecom_deadline_tracker.json
记录格式:
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 天内到期的记录使用 WorkBuddy 的 automation_update 工具创建一次性定时任务。
参数:
mode: "suggested create"name: "任务提醒-{任务名称}"scheduleType: "once"scheduledAt: ISO 8601 格式,如 "2026-04-28T09:00"status: "ACTIVE"prompt: 包含 curl 命令,直接调群机器人发送提醒prompt 模板:
text
发送一条提醒消息到工作任务群。执行以下命令:
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请尽快处理!"}}'
发送完成后简要报告结果。
字段中文名字段 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": "选项"}]待初审、初审通过、待终审、终审通过、终审驳回
字段中文名字段 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数值浮点数,如 0、 0.5、 1—每周回顾任务fOinuX文本数组[{"text": "选项"}]—每月回顾任务furcM5文本数组[{"text": "选项"}]—任务完成总结f2CRNT文本字符串—备注fCpF71文本字符串—
字段中文名字段 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文本字符串—
字段类型传值格式示例文本"字符串"``"查看公司写字楼附近的商业情况"人员[{"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": "未开始"}]进度数字(浮点)0、 0.5、 1数值(整数)数字8(工作小时数)附件[]Webhook 不支持上传附件
日期字段必须传 Unix 毫秒时间戳字符串。
计算方法(macOS 终端):
bash
# 将日期转为毫秒时间戳
date -j -f "%Y-%m-%d" "2026-05-01" "+%s000"
# 输出: 1777353600000
Python 方法:
python
from datetime import datetime
ts = str(int(datetime.strptime("2026-05-01", "%Y-%m-%d").timestamp() * 1000))
# ts = "1777353600000"
⚠️ 绝不能手动计算时间戳! 必须用 date 命令或 Python 计算。
⚠️ 传入无效 userid 会导致整条写入失败!
在首次使用前,请在企微通讯录中确认每个成员的 userid。如果不确定某个人的 userid,先移除该人,写入成功后再补。
用户说:"在工作任务表格中新建一个任务,任务描述:查看公司写字楼附近的商业情况,完全责任人:张三,协作人:李四,知会人:王五,2026-05-01 前完成,2026-04-28 提醒"
执行步骤:
① 计算时间戳:
bash
# 计划开始时间(今天)
date -j -f "%Y-%m-%d" "2026-04-27" "+%s000"
# 计划结束时间
date -j -f "%Y-%m-%d" "2026-05-01" "+%s000"
② 写入表格:
bash
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
}
}]
}'
③ 群通知(工作任务群):
bash
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 命令调工作任务群机器人发送提醒① 写入表格(费用申请系统):
bash
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"
}
}]
}'
② 群通知(费用审批群):
bash
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请审批!"
}
}'
③ 本地追踪 + ④ 设置提醒:同上
① 写入表格(视频制作工作流):
bash
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"
}
}]
}'
② 群通知(视频制作群):
bash
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请及时推进!"
}
}'
wecom_daily_check.pywecom_deadline_tracker.json 读取所有追踪记录有到期记录时:
text
**📌 工作任务提醒**
> 日期:2026-04-28
🔴 **任务名称**
截止:2026-05-01(剩余3天)
责任人:XXX
_定时巡检_
无到期记录时:
text
**📌 工作任务提醒**
> 日期:2026-04-28
> 任务追踪记录:X 条
> 即将到期:0 条(3天内)
> 今日暂无紧急到期任务 ✅
_定时巡检_
紧急程度标识:
#问题原因解决方案日期1金额字段写入失败费用表格的 ftk5Tx(金额)是文本类型,传了数字金额必须传字符串,如 "4800" 而非 4800—2三个群收到相同通知巡检脚本只发一条通用摘要到一个群必须按表格类型分别发到对应群,每个群有专属内容—3wecom-cli 写入失败CLI 的 smartsheet_add_records 需要 sheet_id 且参数复杂放弃 CLI,直接 POST Webhook 更简单可靠—4Bot 读取返回 851003Bot 未被授权文档访问权限用本地 tracker 文件替代读取,需在企微管理后台添加授权才能启用—5xxx userid 无效该用户 ID 在企微中不存在或格式错误移除无效 userid,只传已验证有效的 ID—
date -j 命令或 Python datetime 计算。[{"user_id": "xxx"}]。[{"text": "选项"}]。[] 即可。文件功能references/wecom_smartsheet.py包含所有字段映射、格式转换、Webhook 推送、群通知、本地追踪函数references/wecom_daily_check.py读取 tracker,按表格类型分组发送到期提醒到对应群wecom_deadline_tracker.jsonJSON 格式的到期追踪记录Token 存储所有 Webhook URL 和群机器人 URL 的集中存储(本地,不对外发布)
curl POST Webhookpython
# 推送到表格
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 仅支持以下语法:
**文本**> 文本<font color="warning">文本</font>(支持 info/ warning/ comment)[文本](URL)不支持:标题(#)、代码块(```)、表格、图片、列表等。
颜色关键字显示效果适用场景info绿色正常信息、任务名称warning橙红色截止日期、金额、紧急提醒comment灰色进度、状态等辅助信息
克隆此技能后,按以下步骤配置凭证:
每次操作前,用此清单自查:
[{"user_id": "xxx"}] 格式[{"text": "选项"}] 格式