3.3 KiB
3.3 KiB
| name | version | description | metadata | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| biaoshu | 1.0.0 | 标数 — 飞书知识库剧本表格互动行自动编号与知识点统计技能。 从知识库文档的内嵌 Sheet 中识别互动行(A列类型非 TL/空),自动在 B列写入顺序编号 ID, 并支持从 D列提取知识点生成统计报告。 **触发场景:** - 用户要求给剧本表格互动行"标数""编号""命名 ID" - 用户要求统计剧本表格知识点覆盖情况 - 用户给出知识库链接 + "标数" / "统计知识点" / "加ID" |
|
标数 — 剧本表格互动行编号与知识点统计
前置条件
- 确认目标文档为飞书知识库 wiki 链接(
/wiki/开头) - Bot(App ID:
cli_a931175d41799cc7)已加入该知识空间 - 使用 Bot 身份操作(不触发用户授权)
ID 命名规则
- 格式:
{前缀}{序号},序号从 01 开始,两位数字补零 - 默认前缀:
12185(可自定义) - 示例:第一个互动 →
1218501,第十个 →1218510
互动行识别规则
A列值不为空且不为 TL 的行即为互动行,按行号从小到大的顺序编号。
常见 A列值:
中互动/中互动1...中互动N核心互动-xxx/核心互动X-xxx- 不编号的:
TL行、空行
执行流程
Step 1: 解析知识库链接
从用户提供的 wiki URL 中提取 obj_token 和 space_id:
格式: https://{domain}/wiki/{obj_token}?...
Step 2: 获取文档结构,定位内嵌 Sheet
GET /open-apis/docx/v1/documents/{obj_token}/blocks
Header: Authorization: Bearer {bot_tenant_access_token}
遍历 blocks,找到 block_type: 30(内嵌 Sheet)的 block,从 sheet.token 中提取:
spreadsheet_token= token 中_之前的部分sheet_id= token 中_之后的部分
Step 3: 读取表格数据
GET /open-apis/sheets/v2/spreadsheets/{spreadsheet_token}/values/{sheet_id}!A1:I{max_rows}?valueRenderOption=ToString
Step 4: 识别互动行并生成 ID
遍历数据行(跳过表头),对 A列不为空且不为 TL 的行,按顺序分配编号。
Step 5: 写入 B列
使用 values API 逐行写入,range 格式:{sheet_id}!B{row}:B{row}
PUT /open-apis/sheets/v2/spreadsheets/{spreadsheet_token}/values
Body: {
"valueRange": {
"range": "{sheet_id}!B{row}:B{row}",
"values": [["{id}"]]
}
}
Step 6: 验证
回读 B列确认写入正确。
知识点统计(可选,用户单独要求时执行)
读取 D列(知识点列),按出现次数汇总:
- 遍历有 A列标记的互动行(A列≠TL/空),提取 D列知识点
- 多行知识点(换行分隔)分别统计
Over here./Over here!合并为Over here.统一计数- 输出格式:
序号 | 行号 | 类型 | 知识点 | 次数
示例
输入:
https://makee-interactive.feishu.cn/wiki/P9bvw6nXziqzWZkxDmMcOZN4ndc 标数
输出: 识别 16 个互动行,按序写入 1218501 ~ 1218516 到 B列。
注意事项
- 写单个单元格 range 必须用
B{row}:B{row}格式(非B{row}) - Bot tenant_access_token 通过飞书应用 App ID + App Secret 获取
- 数据行范围需根据实际表格调整(跳过公式行和尾部空行)
- 若 B列已有旧 ID,直接覆盖写入新 ID