飞书给的开发文档实在是有点难看懂,我找了半天批量删除一直没有合适的,它给的是根据记录id来删除,但是查询记录id比较麻烦,在我不断尝试下,发现在查询的时候不输入参数,默认是全部查询,以下代码都是根据这个方法完成的
需要修改的参数
if __name__ == '__main__':
# 修改为自己的
APP_TOKEN = ""
TABLE_ID = ""
USER_ACCESS_TOKEN = ""
delete_main(APP_TOKEN, TABLE_ID, USER_ACCESS_TOKEN)
完整代码
import json
import lark_oapi as lark
from lark_oapi.api.bitable.v1 import *
# SDK 使用说明: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/server-side-sdk/python--sdk/preparations-before-development
# 以下示例代码默认根据文档示例值填充,如果存在代码问题,请在 API 调试台填上相关必要参数后再复制代码使用
def find(APP_TOKEN,TABLE_ID,USER_ACCESS_TOKEN):
# 创建client
# 使用 user_access_token 需开启 token 配置, 并在 request_option 中配置 token
client = lark.Client.builder() \
.enable_set_token(True) \
.log_level(lark.LogLevel.DEBUG) \
.build()
# 构造请求对象
request: SearchAppTableRecordRequest = SearchAppTableRecordRequest.builder() \
.app_token(APP_TOKEN) \
.table_id(TABLE_ID) \
.page_size(200) \ # 查询多少记录,你要删多少就改成多少
.request_body(SearchAppTableRecordRequestBody.builder()
.build()) \
.build()
# 发起请求
option = lark.RequestOption.builder().user_access_token(USER_ACCESS_TOKEN).build()
response: SearchAppTableRecordResponse = client.bitable.v1.app_table_record.search(request, option)
# 处理失败返回
if not response.success():
lark.logger.error(
f"client.bitable.v1.app_table_record.search failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}, resp: \n{json.dumps(json.loads(response.raw.content), indent=4, ensure_ascii=False)}")
return
# 处理业务结果
# lark.logger.info(lark.JSON.marshal(response.data, indent=4))
return json.loads(lark.JSON.marshal(response.data))['items']
# SDK 使用说明: https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/server-side-sdk/python--sdk/preparations-before-development
# 以下示例代码默认根据文档示例值填充,如果存在代码问题,请在 API 调试台填上相关必要参数后再复制代码使用
def delete(APP_TOKEN,TABLE_ID,USER_ACCESS_TOKEN,record_lst):
# 创建client
# 使用 user_access_token 需开启 token 配置, 并在 request_option 中配置 token
client = lark.Client.builder() \
.enable_set_token(True) \
.log_level(lark.LogLevel.DEBUG) \
.build()
# 构造请求对象
request: BatchDeleteAppTableRecordRequest = BatchDeleteAppTableRecordRequest.builder() \
.app_token(APP_TOKEN) \
.table_id(TABLE_ID) \
.request_body(BatchDeleteAppTableRecordRequestBody.builder()
.records(record_lst)
.build()) \
.build()
# 发起请求
option = lark.RequestOption.builder().user_access_token(USER_ACCESS_TOKEN).build()
response: BatchDeleteAppTableRecordResponse = client.bitable.v1.app_table_record.batch_delete(request, option)
# 处理失败返回
if not response.success():
lark.logger.error(
f"client.bitable.v1.app_table_record.batch_delete failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}, resp: \n{json.dumps(json.loads(response.raw.content), indent=4, ensure_ascii=False)}")
return
# 处理业务结果
# lark.logger.info(lark.JSON.marshal(response.data, indent=4))
def delete_main(APP_TOKEN,TABLE_ID,USER_ACCESS_TOKEN):
data_lst = find(APP_TOKEN,TABLE_ID,USER_ACCESS_TOKEN)
record_id = []
[record_id.append(data['record_id']) for data in data_lst]
delete(APP_TOKEN,TABLE_ID,USER_ACCESS_TOKEN,record_id)
if __name__ == '__main__':
APP_TOKEN = ""
TABLE_ID = ""
USER_ACCESS_TOKEN = ""
delete_main(APP_TOKEN, TABLE_ID, USER_ACCESS_TOKEN)