【小技巧】如何获取飞书多维表格的记录分享链接?
评论
收藏

【小技巧】如何获取飞书多维表格的记录分享链接?

经验分享
阿蓝
2025-03-31 20:16·浏览量:3314
阿蓝
发布于 2025-03-31 20:163314浏览

提出问题

飞书多维表格的记录链接,如何获取?

在飞书多维表格中,右键点击一条记录,复制记录链接,即可得到如 https://example.feishu.cn/record/******** 格式的一条链接。

目前影刀市场指令中飞书多维表格的系列指令,是不包含获取此“记录链接”的相关指令的。于是,只能来找找飞书开发平台,尝试找到相关的接口来实现。


分析过程

打开飞书开发平台,搜索关键词“分享记录链接”,即得到结果如下:

💡 使用飞书【批量获取记录】的API,通过传入 record_ids,再从响应体中,提取出 shared_url,就可以得到记录的分享链接。从示例中的shared_url 来看,也确实符合 https://example.feishu.cn/record/******** 的格式。

进入 API 文档再详细阅读一遍,梳理以下内容:

1. 请求头:需要通过 【自建应用获取 tenant_access_token】获取 tenant_access_token 作为 access_token

2. 路径参数:需要从多维表格的链接中,获取 app_token table_id

3. 请求体:

       1)record_ids 是必填项,且需要以列表的格式传入。假如我只需要查单个记录id的分享链接,我希望传入的是字符串格式的记录id,则需要在代码中对数据做一次处理;

       2)with_shared_url 其实也是必填项,因为只有  with_shared_url 的值为 true 时,才会返回分享链接;


实现方式

整理完上述内容,可以得到一份代码如下:

import requests

from typing import *
try:
    from xbot.app.logging import trace as print
except:
    from xbot import print

def get_feishu_bitable_records(app_id, app_secret, app_token, table_id, record_ids):
    """
    title: 获取飞书多维表格记录分享链接
    description: 通过飞书开放接口获取多维表格(Bitable)中的记录数据,首先获取应用%app_id%的访问令牌,然后获取表格%table_id%中指定%record_ids%的记录内容。
    inputs: 
        - app_id (str): 应用ID, eg: "cli_xxx"
        - app_secret (str): 应用 Secret, eg: "xxx"
        - app_token (str): 多维表格 Token, eg: "xxx" 
        - table_id (str): 多维表格 ID, eg: "tbl_xxx"
        - record_ids (str): 记录 ID, eg: "rec_xxx"
    outputs:
        - shared_link (str): 分享链接, eg: "https://xxx"
    """
    def _get_tenant_access_token(app_id, app_secret):
        url = 'https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal'
        headers = {
            'Content-Type': 'application/json; charset=utf-8'
        }
        body = {
            "app_id": app_id,
            "app_secret": app_secret
        }
        response = requests.post(url=url, headers=headers, json=body)
        response_json = response.json()
        if response_json.get('code') != 0:
            error_msg = f"获取访问令牌失败: {response_json}"
            raise Exception(error_msg)
        return response_json.get('tenant_access_token')

    def _get_records(access_token, app_token, table_id, record_ids):
        url = f'https://open.feishu.cn/open-apis/bitable/v1/apps/{app_token}/tables/{table_id}/records/batch_get'
        headers = {
            'Authorization': f'Bearer {access_token}',
            'Content-Type': 'application/json; charset=utf-8'
        }
        body = {
            "record_ids": record_ids.split(','),
            "with_shared_url": "true"
        }
        response = requests.post(url=url, headers=headers, json=body)
        result = response.json()['data']['records'][0]['shared_url']
        return result

    access_token = _get_tenant_access_token(app_id, app_secret)
    shared_link = _get_records(access_token, app_token, table_id, record_ids)
    return shared_link


将此代码,投喂给魔法指令,即可得到一个封装好的指令:

在这个魔法指令中,你需要完成 应用id(app_key)、应用密钥(app_secret)、多维表格token、多维表格id 的基本配置,至于 记录id,可以用变量的方式进行传递。


运行效果

收藏1
全部评论1
最新
发布评论
评论