返回顶部
b

bitable-formula-generator

飞书多维表格字段公式生成器。通过导出Excel分析字段结构,利用Excel公式逻辑生成多维表格兼容公式,并写入多维表格字段。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.1.0
安全检测
已通过
73
下载量
0
收藏
概述
安装方式
版本历史

bitable-formula-generator

# 飞书多维表格字段公式生成器 ## 目的 根据用户描述的业务逻辑,自动生成可直接用于飞书多维表格公式字段的公式。 公式语法与 Excel 类似,但只使用多维表格支持的函数,且用**字段名**(而非列字母)引用数据。 --- ## 完整工作流程 ### 第 1 步:获取多维表格结构 优先通过以下方式获取字段信息: 1. **API 自动获取(推荐)**:使用 `scripts/feishu-bitable-api.js` 脚本自动列出表和字段。 2. **导出为 Excel**:用户导出多维表格为 `.xlsx`,读取表头行获取字段名和数据类型。 3. **用户直接提供**:用户列出字段名及数据类型。 #### 使用 API 脚本获取字段信息 脚本路径:`scripts/feishu-bitable-api.js` **前置条件**:需设置环境变量 `FEISHU_APP_ID` 和 `FEISHU_APP_SECRET`。 **列出所有表**: ```bash node scripts/feishu-bitable-api.js list-tables <app_token> ``` **列出指定表的所有字段**(公式字段会显示当前公式预览,`⚠️ 0` 表示公式未设置): ```bash node scripts/feishu-bitable-api.js list-fields <app_token> <table_name> ``` **查看指定字段的完整 property**(公式字段显示完整公式,单选字段显示所有选项): ```bash node scripts/feishu-bitable-api.js get-field <app_token> <table_name> <field_name> ``` > `app_token` 可从多维表格 URL 中获取,格式如 `https://xxx.feishu.cn/base/<app_token>`。 从 Excel 读取字段信息时,提取第 1 行(表头)作为字段名列表。 --- ### 第 1b 步:确认依赖字段的公式正确性(重要!) **如果目标公式依赖其他公式字段(中间字段),必须先确认中间字段的公式是否正确,再继续。** ```bash # 查看中间字段的当前公式 node scripts/feishu-bitable-api.js get-field <app_token> <table_name> <中间字段名> ``` ⚠️ 常见陷阱:中间字段可能是硬编码的 `0` 或空公式,会导致最终结果全为 0。 --- ### 第 2 步:生成公式(Excel 风格 → 多维表格风格) #### 2a. 先构造 Excel 公式 借鉴 `excel-formula-generator` 技能的公式模式,基于字段映射(A列=字段1, B列=字段2 ...)构造 Excel 公式原型。 #### 2b. 替换列字母为字段名 将公式中的列引用(如 `B2`、`C2`、`B:B`)替换为对应字段名: | Excel 引用 | 多维表格写法 | |---|---| | `B2` | `字段名` | | `C2` | `另一个字段名` | | `"固定文本"` | 保持不变 | | `数字常量` | 保持不变 | 示例: - Excel: `=(B2-C2)/B2` - 多维表格: `(销售额-成本)/销售额` #### 2c. 函数替换规则(仅使用多维表格支持的函数) 不使用 Excel 专有函数,严格只用多维表格支持的函数(见下方函数列表)。 **常见替换:** | Excel 函数 | 多维表格替代 | |---|---| | `VLOOKUP` | `LOOKUP` | | `XLOOKUP` | `LOOKUP` | | `CONCAT` / `&` | `CONCATENATE` | | `SUMPRODUCT` | 无直接等价,用 `SUM`+`FILTER` 组合 | | `COUNTIFS` | `COUNTIF`(单条件)| | `AVERAGEIF/AVERAGEIFS` | 用 `SUM`/`COUNTA` 手工计算 | | `STDEV` | 不支持,提示用户 | | `PERCENTRANK` | 不支持,提示用户 | | `XLOOKUP/INDEX/MATCH` | `LOOKUP` | --- ### 第 3 步:将公式写入多维表格 #### 方法 A:API 脚本写入(推荐) 使用 `scripts/feishu-bitable-api.js` 脚本直接写入公式字段,支持自动创建新字段或更新已有字段: ```bash node scripts/feishu-bitable-api.js set-formula <app_token> <table_name> <field_name> <formula> [formatter] ``` **参数说明:** - `app_token`:多维表格的 app_token - `table_name`:表名(支持中文,如「客户档案表」) - `field_name`:目标字段名(如「热爱得分」) - `formula`:公式内容(建议用引号包裹) - `formatter`(可选):数字格式,默认 `0.0`(一位小数)。可选 `""`(整数)、`0.00`(两位小数)、`#,##0.0`(千分位) **示例:** ```bash # 写入公式到「热爱得分」字段 node scripts/feishu-bitable-api.js set-formula MIASw72fgiRMCxkyqhtcuSwVnPf 客户档案表 "热爱得分" "REGEXEXTRACT(时间投入, \"(([0-9]+)分)\")" # 写入公式,保留两位小数 node scripts/feishu-bitable-api.js set-formula MIASw72fgiRMCxkyqhtcuSwVnPf 客户档案表 "毛利率" "(销售额-成本)/销售额" "0.00" ``` > ⚠️ **公式含 `<`、`>`、`|`、`&` 等特殊字符时,不能通过命令行传入**,PowerShell 会截断参数导致 `FormulaFieldPropertyError`。请改用方法 C(脚本文件 PUT 写入)。 > 脚本会自动:通过环境变量获取 access_token → 通过表名查找 table_id → 检查字段是否存在 → 创建或更新字段。 #### 方法 B:手动粘贴 直接输出公式,让用户复制到多维表格公式字段。 #### 方法 C:直接调用 API 使用飞书开放平台 API 写入公式字段(`PUT` 方法): ``` PUT https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/fields/{field_id} Authorization: Bearer {access_token} Content-Type: application/json { "field_name": "目标字段名", "type": 20, "property": { "formatter": "0.0", "formula_expression": "={公式内容}", "type": { "data_type": 2, "ui_property": { "formatter": "0.0" }, "ui_type": "Number" } } } ``` > - 字段类型 `20` 对应公式字段(Formula) > - 更新已有字段用 `PUT`,创建新字段用 `POST` > - `data_type: 2` 表示数字类型 --- ## 多维表格支持的函数列表 ### 日期函数 `DATE` `DATEDIF` `DAY` `DAYS` `EDATE` `EOMONTH` `HOUR` `MINUTE` `SECOND` `MONTH` `NETWORKDAYS` `NOW` `TODAY` `WEEKDAY` `WEEKNUM` `WORKDAY` `YEAR` `DURATION` `TODATE` ### 逻辑函数 `AND` `CONTAIN` `FALSE` `IF` `IFBLANK` `IFERROR` `IFS` `ISBLANK` `ISERROR` `ISNUMBER` `ISNULL` `MAP` `NOT` `OR` `RANK` `RECORD_ID` `SWITCH` `TRUE` `CONTAINSALL` `CONTAINSONLY` `RANDOMBETWEEN` `RANDOMITEM` ### 文本函数 `CHAR` `CONCATENATE` `CONTAINTEXT` `FIND` `HYPERLINK` `LEFT` `RIGHT` `MID` `LEN` `LOWER` `UPPER` `REPLACE` `SUBSTITUTE` `TEXT` `SPLIT` `TRIM` `ENCODEURL` `FORMAT` `REGEXEXTRACT` `REGEXEXTRACTALL` `REGEXMATCH` `REGEXREPLACE` ### 数字函数 `ABS` `ACOS` `ASIN` `ATAN` `ACOSH` `ASINH` `ATANH` `ATAN2` `AVERAGE` `CEILING` `COS` `SIN` `TAN` `COSH` `SINH` `TANH` `COUNTA` `COUNTIF` `FLOOR` `INT` `ISODD` `MAX` `MIN` `MEDIAN` `MOD` `PI` `POWER` `QUOTIENT` `ROUND` `ROUNDDOWN` `ROUNDUP` `SUM` `SUMIF` `VALUE` `SEQUENCE` ### 位置函数 `DISTANCE` ### 列表/查找函数 `ARRAYJOIN` `FILTER` `FIRST` `LAST` `LIST` `LISTCOMBINE` `LOOKUP` `NTH` `SORT` `SORTBY` `UNIQUE` --- ## 公式语法要点 1. **字段引用**:直接用字段名,如 `销售额`、`时间投入`,字段名有空格也直接使用。 2. **函数调用**:与 Excel 一致,如 `IF(状态="完成", 1, 0)`。 3. **字符串**:用英文双引号 `""`。 4. **四则运算**:`+` `-` `*` `/` `^`。 5. **比较运算**:`=` `<>` `>` `<` `>=` `<=`。 6. **不支持数组公式**(Ctrl+Shift+Enter 那种)。 --- ## 示例交互 ### 示例 1:计算毛利率 **用户:** 字段有"销售额"和"成本",要计算毛利率 **输出:** ``` IFERROR((销售额-成本)/销售额, 0) ``` > 说明:毛利除以销售额,除零时返回0。将目标字段类型设为"公式",格式设为百分比。 --- ### 示例 2:根据分数评级 **用户:** 字段"分数",90以上优秀,70以上良好,60以上合格,否则不合格 **输出:** ``` IFS(分数>=90,"优秀",分数>=70,"良好",分数>=60,"合格",TRUE,"不合格") ``` --- ### 示例 3:计算工龄(年) **用户:** 字段"入职日期",计算到今天的工龄 **输出:** ``` DATEDIF(入职日期, TODAY(), "Y") ``` --- ### 示例 4:条件拼接文本 **用户:** 字段"姓名"和"部门",生成"姓名(部门)"格式 **输出:** ``` CONCATENATE(姓名,"(",部门,")") ``` 或简写: ``` 姓名&"("&部门&")" ``` --- ### 示例 5:蔬菜农场-计算总产值 **用户:** 字段"亩产"、"种植面积"、"销售单价",计算总产值 **输出:** ``` 亩产*种植面积*销售单价 ``` --- ### 示例 6:蔬菜农场-计算亩均收入 **用户:** 字段"总收入"、"总面积",计算亩均收入 **输出:** ``` IFERROR(总收入/总面积, 0) ``` > 说明:防除零保护,总面积为空或0时返回0。 --- ### 示例 7:检查中间字段公式是否正确 **场景:** 目标公式依赖 `学习投入分数` 字段,先确认它的公式 ```bash node scripts/feishu-bitable-api.js get-field MIASw72fgiRMCxkyqhtcuSwVnPf 客户档案表 学习投入分数 ``` **输出示例(有问题):** ``` 字段 ID : fldZTgCSLa 类型 : 20(Formula) 公式 : ⚠️ "0"(未设置有效公式!) ``` > 发现公式为 `0`,需先修复该字段,再使用它参与计算。 --- ## 注意事项 - ⚠️ **中文括号不需要转义**:`(` 和 `)` 可以直接写在正则中,无需转义。 - ⚠️ **提取括号内分数的写法**:`VALUE(REGEXEXTRACT(字段名, "(\d+)分)"))` - ⚠️ **不支持的 Excel 函数**:若用户需求涉及 Excel 专有函数(如 `XLOOKUP`、`SUMPRODUCT`、`STDEV`),需告知用户并给出多维表格的替代方案。 - ⚠️ **字段名区分大小写**:请与实际字段名完全一致。 - ⚠️ **关联字段**:引用"关联字段"中的子字段,用 `关联字段名.子字段名` 格式。 - ⚠️ **多选字段**:多选字段返回的是数组,搭配 `ARRAYJOIN`、`CONTAIN` 等函数使用。 - ⚠️ **API 写入时 PowerShell 中文问题**:在 Windows PowerShell 中执行包含中文的 API 调用可能出错,建议使用脚本文件(`.js`)而非直接命令行执行。 - ⚠️ **公式含特殊字符时禁止命令行传参**:公式中含 `<`、`>`、`|`、`&` 等字符时,PowerShell 会将其解析为重定向/管道符导致参数被截断,**必须**将公式写入 `.js` 脚本文件后执行,不能直接通过 `set-formula` 命令行传入。 - ⚠️ **单选字段 IF 匹配前必须检查实际选项**:用 `get-field` 查看字段的真实选项列表,不要假设选项文本唯一——历史录入可能存在前置空格、引号写法差异等脏数据,需用 `OR` 兼容所有变体写法。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 bitable-formula-generator-1775969408 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 bitable-formula-generator-1775969408 技能

通过命令行安装

skillhub install bitable-formula-generator-1775969408

下载 Zip 包

⬇ 下载 bitable-formula-generator v1.1.0

文件大小: 11.57 KB | 发布时间: 2026-4-13 09:30

v1.1.0 最新 2026-4-13 09:30
Update to 1.1.0

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部