pm-weekly-report-update

将项目经理提交的原始 Excel 周报数据同步到乐荐飞书表格。当项目经理发送周报 Excel 文件、要求更新周收入数据、核对周报数据时激活。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pm-weekly-report-update" with this command: npx skills add romicboy/pm-weekly-report-update

PM Weekly Report Update

项目经理周报数据同步技能。

配置文件

目标飞书表格配置存储在 env.vars 下,使用扁平 key

字段说明
env.vars.pm_feishu_sheet_token飞书表格 token
env.vars.pm_feishu_sheet_sheet_idSheet ID
env.vars.pm_feishu_sheet_url完整 URL

⚠️ 注意:配置系统不支持嵌套格式(如 pm_feishu_sheet.token),写入时会自动拍扁为 pm_feishu_sheet_token。读取时必须使用上述扁平 key。

读取配置(无默认值,配置不存在时为空):

openclaw config get env.vars.pm_feishu_sheet_token
openclaw config get env.vars.pm_feishu_sheet_sheet_id
openclaw config get env.vars.pm_feishu_sheet_url

写入配置(每次只写一个字段)

openclaw config set env.vars.pm_feishu_sheet_token "你的token"
openclaw config set env.vars.pm_feishu_sheet_sheet_id "你的sheet_id"
openclaw config set env.vars.pm_feishu_sheet_url "完整URL"

严禁使用覆盖整个 JSON 的方式写入配置。


配置管理流程

流程 1:首次配置(无配置时)

  1. 用户发送飞书表格 URL(如 https://lejian.feishu.cn/wiki/RgS0wyoEdisDOCkXE0icPWBPnoe?sheet=NdGNM7
  2. 从 URL 解析出 tokensheet_id、完整 url
  3. 逐字段写入配置(每次一个字段):
    openclaw config set env.vars.pm_feishu_sheet.token "RgS0wyoEdisDOCkXE0icPWBPnoe"
    openclaw config set env.vars.pm_feishu_sheet.sheet_id "NdGNM7"
    openclaw config set env.vars.pm_feishu_sheet.url "https://lejian.feishu.cn/wiki/RgS0wyoEdisDOCkXE0icPWBPnoe?sheet=NdGNM7"
    
  4. 告知用户配置完成,可以继续发送 Excel

流程 2:已有配置时

  1. 调用 openclaw config get env.vars.pm_feishu_sheet.token 读取 token
  2. 配合 sheet_idurl 用于后续操作

流程 3:配置更新(用户发送新链接)

如果用户发送了新的飞书表格 URL,视为重新配置提示,重复流程1逐字段更新。


URL 解析规则

飞书表格 URL 格式:

  • Wiki 乐荐格式(带 /wiki/):https://*.feishu.cn/wiki/TOKEN?sheet=SHEET_ID
    • token = ?sheet= 前面的路径部分(如 RgS0wyoEdisDOCkXE0icPWBPnoe
    • sheet_id = ?sheet= 后面的部分(如 NdGNM7
    • url = 原始 URL 整体
  • 标准格式(带 /sheets/):https://feishu.cn/sheets/shtcnABC123
    • token = 路径最后一段(如 shtcnABC123
    • sheet_id = 从 URL 中找 sheet= 参数;无则调用 meta 获取第一个 sheet

判断逻辑

  • 链接含 /wiki/ → Wiki 格式,直接解析 token + sheet_id
  • 链接含 /sheets/ → 标准格式,token 取路径最后一段,sheet_id 从参数读或调用 meta
  • 既无 /wiki/ 也无 /sheets/ → 视为 token,sheet_id 待指定

安装后引导 ⚠️

本技能依赖 lejian-feishu-sheet(飞书电子表格操作技能),必须先安装并配置才能正常工作。

前置条件

  1. 安装依赖技能(如果尚未安装):

    openclaw skills install lejian-feishu-sheet
    
  2. 飞书应用权限:你需要有一个乐荐的飞书应用,该应用需要开通「电子表格」编辑权限(sheets:spreadsheet),并将此飞书表格分享给该应用(编辑权限)。

  3. 配置飞书凭证

    openclaw config set channels.feishu.appId "你的appId"
    openclaw config set channels.feishu.appSecret "你的appSecret"
    
  4. 如需重置本技能配置(只清除乐荐飞书表格配置,保留其他 env.vars):

    openclaw config unset env.vars.pm_feishu_sheet_token
    openclaw config unset env.vars.pm_feishu_sheet_sheet_id
    openclaw config unset env.vars.pm_feishu_sheet_url
    

    ⚠️ 不要使用 openclaw config unset env.vars(会清除所有 env.vars,影响其他技能)。

首次配置

配置完成后,发一次飞书表格链接(如 https://lejian.feishu.cn/wiki/RgS0wyoEdisDOCkXE0icPWBPnoe?sheet=NdGNM7),技能会自动解析并保存。


字段枚举与映射关系

Excel 列定义

Excel列索引Python变量名飞书列对应说明
B(第1索引)channel_name对应飞书G列客户名称(规则2使用)
C(第2索引)ops_channel_name对应飞书X列重要!OPS渠道单位名称(规则1使用)
F(第5索引)pe对应飞书E列项目经理
H(第7索引)supply_price渠道供货价(要同步的周收入)

飞书表格列定义

飞书列列名说明
B区域
C总监
D销售
EPM(项目经理)匹配 Excel pe
F项目唯一标识
G项目名称匹配 Excel channel_name
XOPS渠道单位名称匹配 Excel ops_channel_name(规则1)
CS~CW周收入列第1-5周数据

⚠️ 关键映射

  • Excel ops_channel_name(C列)→ 飞书 X列(不是G列)
  • Excel channel_name(B列)→ 飞书 G列(规则2使用)

匹配字段速查

规则Excel字段飞书字段优先级
规则1ops_channel_name(C列)X列最高
规则2channel_name(B列)+ pe(F列)G列 + E列降级

飞书表格结构

飞书列内容说明
B区域
C总监
D销售
EPM(项目经理)← 匹配 Excel F列
F项目唯一标识
G项目名称← 匹配 Excel B列
XOPS渠道单位名称匹配 Excel C列(重要!)
CS第1周(4/1-4/5)
CT第2周(4/6-4/12)
CU第3周(4/13-4/19)
CV第4周(4/20-4/26)
CW第5周(4/27-4/30)

数据从第3行开始。第2行是表头。

匹配规则

详见 references/match-rules.md

优先级:

  1. 规则1(最高):Excel ops_channel_name(C列)== 飞书 X列(OPS渠道单位名称)→ 直接命中
  2. 规则2(降级)channel_name + pe 联合定位飞书 G列+E列,按 2.1精确 → 2.2前缀剥离 → 2.3双向包含 依次尝试

别名支持: 系统支持项目别名映射,例如 享道出行/赛可出行享道汽车。别名在所有规则中均生效。

匹配失败处理: 规则1失败 → 降级规则2;规则2某一子级失败 → 降级下一级;全部失败 → 报错

报错信息: 未找到项目 [channel_name] + PM [pe] 的行,请确认该项目的周报已添加到此表格


原始 Excel 格式

Sheet 名:UUID 风格(如 d2721d4c-95a5-4d8c-bc12-668050f

列索引Python变量名列名说明
B(第1索引)channel_name客户名称规则2使用
C(第2索引)ops_channel_nameOPS渠道单位名称规则1匹配字段(最高优先级)
F(第5索引)pe项目经理匹配飞书E列
H(第7索引)supply_price渠道供货价= 要同步的周收入

⚠️ openpyxl 的 row 数组是 0-based 索引(Python list):A=index0, B=index1, ..., H=index7

同步流程

第一步:检查配置

调用 openclaw config get env.vars.pm_feishu_sheet.token 读取配置。

  • 有配置 → 继续
  • 无配置 → 请用户发送飞书表格 URL,完成配置后继续

第二步:解析文件名判断周次

文件名格式:xxx_2026_0420-0426---uuid.xlsx

日期区间(MMDD)对应列
0401-0405CS
0406-0412CT
0413-0419CU
0420-0426CV
0427-0430CW

从文件名提取 MMDD-MMDD 区间,匹配上表确定目标列。

第三步:读取 Excel 数据

读取 Sheet 1,从第2行起,提取:

  • channel_name(B列)
  • ops_channel_name(C列)
  • pe(F列)
  • supply_price(H列)

第四步:匹配项目行

references/match-rules.md 中的规则依次尝试匹配:

  1. 规则1:Excel ops_channel_name(C列) == 飞书 X列(最高优先级)
  2. 规则2channel_name + pe 联合定位飞书 G列+E列(2.1精确 → 2.2前缀剥离 → 2.3双向包含)

全部失败 → 报错。

第五步:写入飞书表格

使用 lejian-feishu-sheet 的 write 命令,token/sheet_id 从配置读取:

TOKEN=$(openclaw config get env.vars.pm_feishu_sheet.token)
SHEET_ID=$(openclaw config get env.vars.pm_feishu_sheet.sheet_id)
OPENCLAW_CONFIG=~/workspace/agent/openclaw.json \
~/workspace/agent/skills/lejian-feishu-sheet/scripts/feishu-sheet.sh \
write "$TOKEN" "${SHEET_ID}!CV5:CV5" '[[159468.66]]'

输出格式要求

执行结果输出(JSON)

脚本执行后输出结构化 JSON,包含以下字段:

{
  "week_col": "CV",        // 本次更新的周次列
  "updates": [             // 成功匹配的记录列表(包含写入和跳过)
    {
      "channel": "某科技公司",           // Excel channel_name(B列)
      "ops_channel_name": "2026某科技公司", // Excel OPS渠道单位名称(C列)
      "pe": "张三",               // PM(项目经理)
      "row": 17,                    // 飞书表格目标行号
      "col": "CV",                  // 周次列
      "value": 35792,               // 本次写入的供货价
      "rule": "规则1",              // 命中的匹配规则
      "status": "ok"                // 状态:ok=成功写入, skipped=跳过
    }
  ],
  "errors": [              // 匹配失败的记录列表
    "未找到项目 [某渠道](2025某渠道名)+ PM [李四] 的行"
  ]
}

输出要求:

  1. week_col 必须标注本次更新的周次列(如 CV=第4周)
  2. updates 中的每条记录必须包含:channel、ops_channel_name、pe、row、col、value、rule
  3. errors 中每条错误信息必须包含:项目名(channel_name)、OPS渠道单位名称(ops_channel_name)和 PM
  4. 匹配规则名称需标准化:规则1、规则2.1、规则2.2、规则2.3

错误处理

情况处理
无飞书表格配置请用户发送飞书表格 URL,分析后写入配置
文件名无法解析周次报错:「无法识别文件名中的日期,请确认格式如 xxx_2026_0420-0426---uuid.xlsx」
项目行未找到报错:「未找到项目 [某公司] + PM [某PM] 的行,请确认该项目的周报已添加到此表格」
渠道供货价为0或空跳过该行(不写入),并在结果中说明「[某公司] 无渠道供货价数据(0),已跳过」
找到多个匹配行报错:「匹配到多行,请检查数据:[行号1] [行号2]」

注意事项

  • 每次只更新已有行,不新建行
  • 有任何一行匹配失败,整体报错,不部分更新
  • 使用乐荐飞书凭证(channels.feishu.appId / channels.feishu.appSecret
  • 写入前展示将要更新的内容,确认后执行

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Fireseed Auto Novel Publish

火种小说平台 fireseed.online 创作与发布技能——AI 作者授权后可在平台上创作小说、发布章节、管理作品、与读者互动。全程 HTTP API 接入,无需浏览器。

Registry SourceRecently Updated
General

RedotPay Payment Skill for MPP

Use this skill when the user wants to call an API, discover available services, or access external data with automatic payments using RedotPay — or mentions...

Registry SourceRecently Updated
General

Beauty Diagram

Use when the user asks for a presentation-ready Mermaid / PlantUML diagram (e.g. "beautify this flowchart", "make this look like a deck slide", "produce an S...

Registry SourceRecently Updated
General

我的世界JAVA版本MOD搜索整合Skill

Search and recommend Minecraft Java Edition mods from multiple platforms (Modrinth, CurseForge). Use when the user describes mod functionality needs, provide...

Registry SourceRecently Updated