使用 Python SDK 将数据写入飞书多维表格

本文档记录了如何通过 Python 代码将文本信息自动保存到指定的飞书多维表格(Base/Bitable)中。主要包含飞书开放平台的配置、表格授权以及环境安装步骤。

一、 飞书开放平台配置

在使用代码之前,需要先创建一个"机器人"身份并赋予相应权限。

  1. 创建应用

    登录 飞书开放平台,创建一个企业自建应用。

  2. 配置权限

    进入应用的"权限管理"页面,搜索并开通以下权限(Scope):

    • bitable:app (查看、评论、编辑和管理多维表格)
    • base:record:create (新增记录)

二、 获取多维表格信息

代码中需要定位到具体的表格,需要从浏览器地址栏中获取以下两个 ID。

  1. 打开目标多维表格

    使用浏览器访问你需要写入数据的表格。

  2. 提取 ID

    观察浏览器地址栏的 URL,格式通常如下:
    https://base_url/base/{app_token}?table={table_id}

    • App Token :紧跟在 base/ 后面的那串字符。
    • Table ID :URL 参数中 table= 后面的那串字符。

三、 文档授权(关键步骤)

仅有 API 权限是不够的,还需要将应用"拉入"具体的文档中,否则会报错 Forbidden (91403)

  1. 在多维表格页面右上角,点击 "..."(菜单按钮)。
  2. 选择 "更多" -> "添加文档应用"
  3. 在搜索框中输入你在第一步创建的应用名称
  4. 点击添加,并务必勾选 "可编辑" 权限。

四、 安装环境

在本地 Python 环境中安装飞书官方 SDK:

bash 复制代码
pip install lark-oapi

五、 代码实现

完成以上配置后,将 App TokenTable ID 以及应用的 App IDApp Secret 填入代码即可运行。

复制代码
import lark_oapi as lark
from lark_oapi.api.bitable.v1 import *

# ================= 配置信息 =================
APP_ID = "cli_xxxx"
APP_SECRET = "2JBE7yyyyyy"
APP_TOKEN = "VvgbbVCOzalrcfsxxxxxxx"
TABLE_ID = "tblMGgT4yyyyyyy"
# ===========================================

def save_to_feishu_sdk(text_content):
    # 1. 构建 Client
    client = lark.Client.builder() \
        .app_id(APP_ID) \
        .app_secret(APP_SECRET) \
        .build()

    # 2. 构造请求对象
    # 注意:fields 中的 key 必须与表格列名一致
    request = CreateAppTableRecordRequest.builder() \
        .app_token(APP_TOKEN) \
        .table_id(TABLE_ID) \
        .request_body(AppTableRecord.builder() \
            .fields({
                "消息内容": text_content
            }) \
            .build()) \
        .build()

    # 3. 发起请求
    response = client.bitable.v1.app_table_record.create(request)

    # 4. 处理结果
    if not response.success():
        print(f"请求失败, code: {response.code}, msg: {response.msg}")
        return

    print(f"保存成功! Record ID: {response.data.record.record_id}")

if __name__ == "__main__":
    save_to_feishu_sdk("内容: 卖出:1000ETF(159629.XSHE:2.512) - 中证2000策略")

使用 requests 库(原生 API)

复制代码
import requests

# ================= 配置信息 =================
APP_ID = "cli_xxxx"
APP_SECRET = "2JBE7yyyyyy"
APP_TOKEN = "VvgbbVCOzalrcfsxxxxxxx"
TABLE_ID = "tblMGgT4yyyyyyy"
# ===========================================

def get_tenant_access_token(app_id, app_secret):
    """获取访问凭证 (tenant_access_token)"""
    url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
    headers = {"Content-Type": "application/json; charset=utf-8"}
    payload = {
        "app_id": app_id,
        "app_secret": app_secret
    }
    
    response = requests.post(url, headers=headers, json=payload)
    if response.status_code == 200:
        return response.json().get("tenant_access_token")
    else:
        raise Exception(f"获取 Token 失败: {response.text}")

def add_record(access_token, app_token, table_id, data_fields):
    """向多维表格添加一条记录"""
    url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records"
    
    headers = {
        "Authorization": f"Bearer {access_token}",
        "Content-Type": "application/json; charset=utf-8"
    }
    
    # 构建请求体
    payload = {
        "fields": data_fields  # 这里的 keys 必须对应多维表格里的列名
    }
    
    response = requests.post(url, headers=headers, json=payload)
    return response.json()

def save_to_feishu(text_content):
    try:
        # 1. 获取 Token
        token = get_tenant_access_token(APP_ID, APP_SECRET)
        print("Token 获取成功")
        
        # 2. 准备要保存的数据
        # 注意:字典的 Key 必须完全匹配多维表格的【字段名称】
        text_data = {
            "消息内容": text_content
        }
        
        # 3. 写入数据
        result = add_record(token, APP_TOKEN, TABLE_ID, text_data)
        
        if result.get("code") == 0:
            print("数据保存成功!记录ID:", result["data"]["record"]["record_id"])
        else:
            print("保存失败:", result)
            
    except Exception as e:
        print("发生错误:", e)

if __name__ == "__main__":
    save_to_feishu('内容: 卖出:1000ETF(159629.XSHE:2.512) - 中证2000策略')
相关推荐
百结21411 分钟前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY34 分钟前
时区问题解决
数据库
Leinwin1 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_417695051 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水1 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat1 小时前
MySQL 服务基础
数据库·mysql
yy我不解释2 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(一)
python·ai作画·音视频·comfyui
Maverick063 小时前
Oracle Redo 日志操作手册
数据库·oracle
紫丁香3 小时前
AutoGen详解一
后端·python·flask
FreakStudio3 小时前
不用费劲编译ulab了!纯Mpy矩阵micronumpy库,单片机直接跑
python·嵌入式·边缘计算·电子diy