3.2 KiB
3.2 KiB
name, description
| name | description |
|---|---|
| feishu-bitable | 飞书多维表格操作。用于记录增删改查、批量操作、筛选排序、数据同步。当需要操作飞书多维表格时使用。 |
飞书多维表格 (Bitable)
URL 结构
https://xxx.feishu.cn/base/BascXXX?table=tblXXX&view=vewXXX
└── app_token └── table_id
核心操作
列出记录
def list_records(app_token, table_id, filter_str=None, page_size=100):
url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records"
params = {"page_size": page_size}
if filter_str:
params["filter"] = filter_str
response = requests.get(url, headers=headers, params=params)
return response.json()["data"]["items"]
创建记录
def create_record(app_token, table_id, fields):
url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records"
response = requests.post(url, headers=headers, json={"fields": fields})
return response.json()["data"]["record"]
# 示例
create_record("BascXXX", "tblXXX", {"任务名称": "完成开发", "状态": "进行中"})
批量创建 (最多 500 条)
url = f".../records/batch_create"
requests.post(url, headers=headers, json={"records": [{"fields": {...}}, ...]})
更新记录
def update_record(app_token, table_id, record_id, fields):
url = f".../records/{record_id}"
response = requests.put(url, headers=headers, json={"fields": fields})
return response.json()["data"]["record"]
删除记录
def delete_record(app_token, table_id, record_id):
url = f".../records/{record_id}"
return requests.delete(url, headers=headers).json()
筛选条件
# 等于
'CurrentValue.[状态]="进行中"'
# 包含
'CurrentValue.[标题].contains("任务")'
# 大于(数字/日期)
'CurrentValue.[优先级]>2'
# 组合
'AND(CurrentValue.[状态]="进行中", CurrentValue.[优先级]>2)'
'OR(CurrentValue.[状态]="完成", CurrentValue.[状态]="归档")'
# 空值
'CurrentValue.[截止日期]=BLANK()'
排序
params = {
"sort": '[{"field_name":"优先级","desc":true}]'
}
字段类型
| 类型 | 值格式 |
|---|---|
| 文本 | "字符串" |
| 数字 | 123 |
| 单选 | "选项值" |
| 多选 | ["选项1", "选项2"] |
| 日期 | 1706400000000 (毫秒时间戳) |
| 人员 | [{"id": "ou_xxx"}] |
| 复选框 | true/false |
| 链接 | {"link": "https://...", "text": "显示文本"} |
完整工具类
见 ~/.claude/skills/feishu/feishu_bitable.py
from feishu_bitable import FeishuBitable
bitable = FeishuBitable()
records = bitable.list_records("BascXXX", "tblXXX")
bitable.create_record("BascXXX", "tblXXX", {"名称": "测试"})
bitable.batch_create("BascXXX", "tblXXX", [{"名称": "1"}, {"名称": "2"}])
常见场景
# 获取待处理任务
tasks = bitable.list_records("BascXXX", "tblXXX",
filter_str='CurrentValue.[状态]="待处理"')
# 批量更新状态
for task in tasks:
bitable.update_record("BascXXX", "tblXXX",
task["record_id"], {"状态": "已完成"})