|
@@ -0,0 +1,99 @@
|
|
|
+"""
|
|
|
+@author: luojunhui
|
|
|
+feishu python方法
|
|
|
+"""
|
|
|
+
|
|
|
+import requests
|
|
|
+
|
|
|
+
|
|
|
+def get_app_token():
|
|
|
+ """
|
|
|
+ 获取飞书api token
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/"
|
|
|
+ post_data = {
|
|
|
+ "app_id": "cli_a51114cf8bf8d00c", # 这里账号密码是发布应用的后台账号及密码
|
|
|
+ "app_secret": "cNoTAqMpsAm7mPBcpCAXFfvOzCNL27fe",
|
|
|
+ }
|
|
|
+ response = requests.request("POST", url=url, data=post_data)
|
|
|
+ tenant_access_token = response.json()["tenant_access_token"]
|
|
|
+ print(tenant_access_token)
|
|
|
+ return tenant_access_token
|
|
|
+
|
|
|
+
|
|
|
+class Feishu(object):
|
|
|
+ """
|
|
|
+ feishu Python Object
|
|
|
+ """
|
|
|
+
|
|
|
+ def __init__(self, document_token):
|
|
|
+ self.headers = {"Content-Type": "application/json"}
|
|
|
+ self.document_token = document_token
|
|
|
+
|
|
|
+ def prepend_value(self, sheet_id, ranges, values):
|
|
|
+ """
|
|
|
+ 在表的某一个sheet的ranges中插入数据,若该地方存在数据,会自动把已有的数据往下移动,再写如数据
|
|
|
+ :param sheet_id: 飞书表的唯一ID
|
|
|
+ :param ranges: 单元格位置的range, 从左上角到右下角, 两边都是闭区间
|
|
|
+ :param values: 二维数组, 用于填充ranges的空格数组
|
|
|
+ """
|
|
|
+ insert_value_url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{}/values_prepend".format(
|
|
|
+ self.document_token
|
|
|
+ )
|
|
|
+ # print(get_app_token())
|
|
|
+ headers = {
|
|
|
+ "Authorization": "Bearer " + get_app_token(),
|
|
|
+ "contentType": "application/json; charset=utf-8",
|
|
|
+ }
|
|
|
+ body = {
|
|
|
+ "valueRange": {"range": "{}!{}".format(sheet_id, ranges), "values": values}
|
|
|
+ }
|
|
|
+ response = requests.request(
|
|
|
+ "POST", url=insert_value_url, headers=headers, json=body
|
|
|
+ )
|
|
|
+ print(response.json())
|
|
|
+
|
|
|
+ def insert_value(self, sheet_id, ranges, values):
|
|
|
+ """
|
|
|
+ 插入数据
|
|
|
+ :param sheet_id:
|
|
|
+ :param ranges:
|
|
|
+ :param values:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ insert_value_url = (
|
|
|
+ "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{}/values".format(
|
|
|
+ self.document_token
|
|
|
+ )
|
|
|
+ )
|
|
|
+ headers = {
|
|
|
+ "Authorization": "Bearer " + get_app_token(),
|
|
|
+ "contentType": "application/json; charset=utf-8",
|
|
|
+ }
|
|
|
+ body = {
|
|
|
+ "valueRange": {"range": "{}!{}".format(sheet_id, ranges), "values": values}
|
|
|
+ }
|
|
|
+ response = requests.request(
|
|
|
+ "PUT", url=insert_value_url, headers=headers, json=body
|
|
|
+ )
|
|
|
+ print(response.json())
|
|
|
+
|
|
|
+ def search_value(self, sheet_id, ab):
|
|
|
+ """
|
|
|
+ 搜索
|
|
|
+ :param sheet_id:
|
|
|
+ :param ab:
|
|
|
+ :return:
|
|
|
+ """
|
|
|
+ ranges = "{}!{}".format(sheet_id, ab)
|
|
|
+ # print(ranges)
|
|
|
+ search_url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{}/values/{}".format(
|
|
|
+ self.document_token, ranges
|
|
|
+ )
|
|
|
+ headers = {
|
|
|
+ "Authorization": "Bearer " + get_app_token(),
|
|
|
+ "contentType": "application/json; charset=utf-8",
|
|
|
+ }
|
|
|
+ response = requests.request("GET", url=search_url, headers=headers)
|
|
|
+ return response.json()
|