12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import json
- from utils import request_post, request_get
- from config import set_config
- config_ = set_config()
- class FeiShuHelper(object):
- @staticmethod
- def get_tenant_access_token():
- """获取自建应用的tenant_access_token"""
- url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
- headers = {"Content-Type": "application/json; charset=utf-8"}
- request_data = config_.FEISHU_TOKEN
- data = request_post(request_url=url, headers=headers, request_data=request_data)
- if data is not None:
- tenant_access_token = data.get('tenant_access_token')
- return tenant_access_token
- def get_data(self, spreadsheet_token, sheet_id):
- """读取电子表格数据"""
- tenant_access_token = self.get_tenant_access_token()
- url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{spreadsheet_token}/values_batch_get"
- headers = {
- "Content-Type": "application/json; charset=utf-8",
- "Authorization": f"Bearer {tenant_access_token}"
- }
- params = {
- 'ranges': sheet_id,
- }
- data = request_get(request_url=url, headers=headers, params=params)
- values = []
- if data is not None:
- try:
- values = data['data']['valueRanges'][0].get('values')
- except:
- values = []
- return values
- def data_to_feishu_sheet(self, sheet_token, sheet_id, data, start_row, start_column, end_column):
- tenant_access_token = self.get_tenant_access_token()
- url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{sheet_token}/values_prepend"
- headers = {
- "Content-Type": "application/json",
- "Authorization": f"Bearer {tenant_access_token}"
- }
- for i in range(len(data) // 10 + 1):
- values = data[i * 10:(i + 1) * 10]
- start_index = start_row + i * 10
- end_index = start_index + len(values)-1
- print(len(values), start_index, end_index)
- post_data = {
- "valueRange": {
- "range": f"{sheet_id}!{start_column}{start_index}:{end_column}{end_index}",
- "values": values
- }
- }
- r2 = request_post(request_url=url, headers=headers, request_data=post_data)
- # print(r2["msg"])
- print(r2)
- def update_values(self, sheet_token, sheet_id, data, start_row, start_column, end_column):
- """写入数据"""
- tenant_access_token = self.get_tenant_access_token()
- url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{sheet_token}/values_append"
- headers = {
- "Content-Type": "application/json",
- "Authorization": f"Bearer {tenant_access_token}"
- }
- for i in range(len(data) // 10 + 1):
- values = data[i * 10:(i + 1) * 10]
- start_index = start_row + i * 10
- end_index = start_index + len(values) - 1
- print(len(values), start_index, end_index)
- post_data = {
- "valueRange": {
- "range": f"{sheet_id}!{start_column}{start_index}:{end_column}{end_index}",
- "values": values
- }
- }
- r2 = request_post(request_url=url, headers=headers, request_data=post_data)
- # print(r2["msg"])
- print(r2)
- if __name__ == '__main__':
- # sheet_info = config_.SHEET_INFO['汉语常用词汇表']
- # FeiShuHelper().get_data(spreadsheet_token=sheet_info.get('spreadsheet_token'), sheet_id=sheet_info.get('sheet_id'))
- FeiShuHelper().data_to_feishu_sheet(sheet_token='DkiUsqwJ6hmBxstBYyEcNE4ante',
- sheet_id='08d4cc',
- data=[['1', 2, 3, 4]],
- start_row=1,
- start_column='A',
- end_column='D')
|