欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 飞书API 2-2:如何使用 API 建多维表

飞书API 2-2:如何使用 API 建多维表

2024/10/24 7:28:35 来源:https://blog.csdn.net/qq_45476428/article/details/139730906  浏览:    关键词:飞书API 2-2:如何使用 API 建多维表

本文探讨如何通过飞书的 API 来创建多维表。
通过 API 创建的多维表,会把文件夹放到共享空间,如果不想将文件夹放到共享空间,建议手动创建。

查看创建多维表的 API

API 路径,可在飞书开放平台的服务端 API,依次查找云文档>多维表格>多维表格>创建多维表格,或者直接点击:创建多维表API。
如果是在根目录,即我的空间创建多维表,传递多维表的参数名即可;如果是要在指定的文件下创建多维表,则需要多传递一个文件夹的 token 参数,示例如下:

{"name":"一篇新的多维表格","folder_token": "fldbco*****CIMltVc"
}

如何获取文件夹的 token?参考下图:
image.png

Tips:如果是使用上一篇通过 API 创建的文件夹,则可直接使用上一篇创建完文件夹返回的 token 传递给 folder_token 参数。
这里我已经创建好了,直接使用即可。

API 调试

在飞书 API 调试台测试新建多维表。
我的文件夹 token 为:AYYvfPya0l60fPd9CvTcFEuFnbc,填入参数,名字就叫做飞书数据类型测试表。
image.png

调试结果是报错了,查看说明,没有云空间节点的权限。
image.png

在对应的文件查看是否有类似文档授权的方式,给应用授权,结果没找到。
查看关于云文档的权限的常见问题,找到了一个答案:需要应用启用机器人能力,然后在飞书客户端创建群组,将应用添加为群机器人。再在我的空间中找到对应的文件夹,将文件夹分享给刚刚新建的群组。
需要应用启用机器人能力。打开飞书软件,创建新的群组,将应用添加为群机器人。在飞书云文档,我的空间中找到对应的文件夹,将文件夹分享给刚刚新建的群组。
image.png

换句话说,文件夹给应用授权需要通过分享给群组,然后在群组里添加应用的机器人,怎么添加呢,需要先在应用后台开启应用的机器人能力。
具体操作见下文。

应用开启机器人能力

到应用中心找到对应的应用,我的应用叫:飞书多维表数据传输,点击进入应用后台。
image.png

点击应用能力模块的添加应用能力>按能力添加>点击机器人下面的添加按钮。
image.png

添加好机器人之后会新增一个机器人的配置项,如下图标识1。机器人创建好之后,需要新建版本提交申请,如下图标识2,填写版本号、更新说明和申请理由便可提交申请。(注:下图是版本发布成功后的界面)。
image.png

创建群组并添加应用机器人

申请通过之后,便可以在群组中添加应用机器人。
先创建一个群组,打开飞书的客户端,如下图,点击创建群组。
image.png

在弹窗中配置群名称、群头像、群成员等,点击创建即可,支持创建一人群组,也就是说输入一个群名称,直接点击创建。
image.png

创建好群组后,点击群名>点击群机器人>
image.png

添加机器人
image.png

在弹窗中便可以看到应用的机器人,如果应用没有添加机器人能力,是不会在这里出现的。
image.png

直接点击添加即可。
image.png

添加完成后在聊天窗口会有一个邀请的提示,表示添加成功。
image.png

文件夹分享给群组

打开云文档空间对应的文件夹,右侧点击分享,然后将刚刚添加了应用机器人的群组添加管理权限。
image.png

成功新建多维表

配置好权限之后,在 API 调试台,再次发起创建多维表的请求,终于成功了!
image.png

请求示例代码

import requests
import jsonurl = "https://open.feishu.cn/open-apis/bitable/v1/apps"
payload = json.dumps({"folder_token": "AYYvfPya0l60fPd9CvTcFEuFnbc","name": "飞书数据类型测试表"
})headers = {'Content-Type': 'application/json','Authorization': 'Bearer t-g1046ff3NIZY52OTZQTQR4CBENWQLRV5KLDSZI22'
}response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)

从响应体看,该多维表会创建一个默认的数据表。

{"code": 0,"data": {"app": {"app_token": "EPYFbi4ThahvLUsJ9nUchaXQnLh","default_table_id": "tblu1SpDkQ4qmh7F","folder_token": "AYYvfPya0l60fPd9CvTcFEuFnbc","name": "飞书数据类型测试表","url": "https://xxx.feishu.cn/base/EPYFbi4ThahvLUsJ9nUchaXQnLh"}},"msg": "success"
}

查看文件夹,新增了一个叫“飞书数据类型测试表”的多维表,所有者是对应的应用。
image.png

打开该表,可以看到有一个默认的数据表。
image.png

至此,完成了多维表的创建。
由于使用 API 创建的多维表的所有者是应用,所以对应的文件会变成一个共享文件夹,和应用一起“协作”。还需要注意的点,通过应用创建的文件夹,如果不需要了,也只能通过应用删除,尽管协作者拥有管理权限。
image.png

流程梳理与总结

使用 API 创建多维表,需要先将文件夹分享给添加应用机器人的群组,通过该方式间接将文件夹授权给应用。
首次在群组新增应用机器人,需要先在应用后台开启机器人的能力。
实际使用过程中,可以创建一个群组专门用于文件夹的授权,这样一来,之后直接把文件夹分享给对应的群组,完成授权即可。
操作流程如下:

  • 应用添加机器人和创建群组并邀请应用机器人入群视为一次性操作,此后直接调用API为新的文件夹添加协作者权限即可。

文件夹给群组添加协作者权限,需要先获取群组的 chat_id。
找到获取群信息 API 文档,如下图,在右边的调试台,点击选择群组,可以复制 chat_id。
image.png

获取到 chat_id,可以保存下来之后反复使用。
调用添加协作者权限 API,为文件夹添加群组协作者
image.png

示例代码如下:


import requests
import jsonurl = "https://open.feishu.cn/open-apis/drive/v1/permissions/AYYvfPya0l60fPd9CvTcFEuFnbc/members?need_notification=true&type=folder"
payload = json.dumps({"member_id": "oc_4db36e6b4ef56960cae2544ec9ae519c","member_type": "openchat","perm": "full_access","type": "chat"
})headers = {'Content-Type': 'application/json','Authorization': 'Bearer t-g1046g9NIJNUNPQY2XLT2V2Q5K5XPMIJTBWKRAQL'
}response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)

结合前面新建多维表的代码,将两个 API 的请求代码封装成一个函数,传递关键参数,然后返回需要值。最终参考代码如下:

import requests
import jsondef add_folder_permission(access_token,folder_token,chatid,permission_type='full_access'):"""功能:给群组开文件夹的协作权限permission_type:view(阅读)、edit(编辑)、full_access(管理)"""url = f"https://open.feishu.cn/open-apis/drive/v1/permissions/{folder_token}/members?need_notification=true&type=folder"payload = json.dumps({"member_id": chatid,"member_type": "openchat","perm": "full_access","type": "chat"})headers = {'Content-Type': 'application/json','Authorization': f'Bearer {access_token}'}response = requests.request("POST", url, headers=headers, data=payload)code = response.json()['code']if code == 0:print(f"成功为 {chatid} 开通权限。关联函数:add_folder_permission。")else:msg = response.json().get("msg")raise f"创建文件夹失败,失败信息:{msg}。关联函数:add_folder_permission。"def cre_bitable(access_token,bitable_name,folder_token=''):url = "https://open.feishu.cn/open-apis/bitable/v1/apps"payload = json.dumps({"folder_token": folder_token,"name": bitable_name})headers = {'Content-Type': 'application/json','Authorization': f'Bearer {access_token}'}response = requests.request("POST", url, headers=headers, data=payload)code = response.json()['code']if code == 0:app = response.json().get('data').get('app')bitable_app_token = app.get('app_token')bitable_table_id = app.get('default_table_id')print(f"成功创建多维表,多维表 app_token:{bitable_app_token},默认数据表ID:{bitable_table_id}。关联函数:add_folder_permission。")return bitable_app_token,bitable_table_idelse:msg = response.json().get("msg")raise f"创建文件夹失败,失败信息:{msg}。关联函数:add_folder_permission。"def get_tenant_access_token(app_id, app_secret):url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"payload = json.dumps({"app_id": app_id,"app_secret": app_secret})headers = {'Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload)tenant_access_token = response.json()['tenant_access_token']print(f'成功获取tenant_access_token:{tenant_access_token}。关联函数:get_table_params。')return tenant_access_tokendef main():app_id = 'your_app_id'app_secret = 'your_app_secret'access_token = get_tenant_access_token(app_id, app_secret)chatid = 'your_chat_id'add_folder_permission(access_token,new_folder_token,chatid,permission_type='full_access')bitable_name = "多维表名称"folder_token = "your_folder_token"bitable_app_token,bitable_table_id = cre_bitable(access_token,bitable_name,folder_token)if __name__ == '__main__':main()

小结

本文探讨了如何通过 API 创建多维表。
具体操作如下:

  • 获得文件夹的权限
    • 应用配置:在应用后台开启机器人的能力
    • 创建群组:专用于文件夹授权
    • 群组配置:添加应用机器人
    • 文件夹授权:分享给新建的群组
  • 使用 API 创建多维表

其中,应用和群组配置可以视为一次性操作,后续只需要进行文件夹给群组授权,便可以使用 API 创建多维表。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com