← 返回 Skills 市场
romicboy

PM周报数据同步

作者 沈荣明 · GitHub ↗ · v1.1.9 · MIT-0
cross-platform ✓ 安全检测通过
97
总下载
0
收藏
0
当前安装
11
版本数
在 OpenClaw 中安装
/install pm-weekly-report-update
功能描述
将项目经理提交的原始 Excel 周报数据同步到乐荐飞书表格。当项目经理发送周报 Excel 文件、要求更新周收入数据、核对周报数据时激活。
使用说明 (SKILL.md)

PM Weekly Report Update

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

配置文件

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

字段 说明
env.vars.pm_feishu_sheet_token 飞书表格 token
env.vars.pm_feishu_sheet_sheet_id Sheet 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 销售
E PM(项目经理) 匹配 Excel pe
F 项目唯一标识
G 项目名称 匹配 Excel channel_name
X OPS渠道单位名称 匹配 Excel ops_channel_name(规则1)
CS~CW 周收入列 第1-5周数据

⚠️ 关键映射

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

匹配字段速查

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

飞书表格结构

飞书列 内容 说明
B 区域
C 总监
D 销售
E PM(项目经理) ← 匹配 Excel F列
F 项目唯一标识
G 项目名称 ← 匹配 Excel B列
X OPS渠道单位名称 匹配 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_name OPS渠道单位名称 规则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-0405 CS
0406-0412 CT
0413-0419 CU
0420-0426 CV
0427-0430 CW

从文件名提取 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
  • 写入前展示将要更新的内容,确认后执行
安全使用建议
Before installing, make sure you trust the Feishu helper skill, use least-privilege Feishu app credentials, verify the configured target sheet, run the dry-run preview, and only confirm writes after checking the matched rows and revenue values.
功能分析
Type: OpenClaw Skill Name: pm-weekly-report-update Version: 1.1.9 The skill bundle is designed to synchronize Excel-based project management reports with Feishu spreadsheets. It utilizes the `openpyxl` library for data extraction and interacts with the Feishu API via a separate helper script (`feishu-sheet.sh`) and the OpenClaw configuration manager. The logic includes detailed matching rules (regex, aliases) and handles sensitive credentials (Feishu tokens) in a manner consistent with its stated purpose. No evidence of data exfiltration, malicious persistence, or harmful prompt injection instructions was found in the code or documentation.
能力评估
Purpose & Capability
The artifacts consistently describe reading PM Excel weekly reports, matching rows, and updating weekly revenue cells in a configured Feishu spreadsheet. This is purpose-aligned, but it is still a sensitive business-data mutation workflow.
Instruction Scope
The included script defaults to dry-run and requires --confirm before writing, which is a good control. Users should still verify the preview because confirmed writes change spreadsheet data.
Install Mechanism
There is no install spec, but SKILL.md instructs users to install a separate Feishu spreadsheet skill, and the Python script calls that external helper. This dependency is disclosed but not version-pinned in the provided artifacts.
Credentials
Feishu app credentials and spreadsheet edit permission are proportionate to the sync purpose, but the registry metadata does not declare these credentials or capability tags.
Persistence & Privilege
The skill persists the target Feishu sheet token, sheet ID, and URL in OpenClaw config for reuse. This is expected for the workflow, but users should control who can change the configured target.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install pm-weekly-report-update
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /pm-weekly-report-update 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.9
澄清飞书行号计算:API 返回从 row1 开始,row_num=i+1(i=16→row17郢际)已验证正确;增加注释说明避免误解
v1.1.8
安全改进:默认干跑模式,需显式 --confirm 才写入;精确重置说明避免影响其他技能
v1.1.7
修复列索引错误:H列渠道供货价正确为 row[7](0-based),之前误写为 row[8]
v1.1.6
安全修复:错误信息中隐藏 token/sheet_id,改为显示布尔值(是否已配置),避免凭证泄露到日志
v1.1.5
新增干跑模式:--dry-run 参数可预览匹配结果(pending 状态),确认后再正式写入飞书表格,避免误操作
v1.1.4
安全修复:彻底消除 shell 注入风险,改用纯列表传参,参数完全不经过 shell
v1.1.3
安全修复:修复 shell 注入风险,改用 bash -c 列表形式执行外部命令
v1.1.2
脱敏处理:替换所有真实示例为公司/人名/项目名为虚拟名称
v1.1.1
修复发布名称:正确使用 displayName(之前1.1.0用了错误名称重发)
v1.1.0
新增别名映射功能:享道汽车/赛可出行/享道出行自动识别;规则模块重构为独立 match_rules.py;规则2.3包含匹配逻辑优化;匹配结果新增 ops_channel_name 字段展示
v1.0.0
重大更新:修复多个核心Bug——周次解析列索引错位、渠道供货价读取列错位、配置读取被redact问题;新增规则2.3拆分后缀匹配;输出格式增加ops_channel_name字段并更新文档
元数据
Slug pm-weekly-report-update
版本 1.1.9
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 11
常见问题

PM周报数据同步 是什么?

将项目经理提交的原始 Excel 周报数据同步到乐荐飞书表格。当项目经理发送周报 Excel 文件、要求更新周收入数据、核对周报数据时激活。 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 97 次。

如何安装 PM周报数据同步?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install pm-weekly-report-update」即可一键安装,无需额外配置。

PM周报数据同步 是免费的吗?

是的,PM周报数据同步 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

PM周报数据同步 支持哪些平台?

PM周报数据同步 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 PM周报数据同步?

由 沈荣明(@romicboy)开发并维护,当前版本 v1.1.9。

💬 留言讨论