feishu.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from utils.utils import request_post, request_get
  2. from config import set_config
  3. config_, env = set_config()
  4. class FeiShuHelper(object):
  5. @staticmethod
  6. def get_tenant_access_token():
  7. """获取自建应用的tenant_access_token"""
  8. url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
  9. headers = {"Content-Type": "application/json; charset=utf-8"}
  10. request_data = config_.FEISHU_TOKEN
  11. data = request_post(request_url=url, headers=headers, request_data=request_data)
  12. if data is not None:
  13. tenant_access_token = data.get('tenant_access_token')
  14. return tenant_access_token
  15. def get_data(self, spreadsheet_token, sheet_id):
  16. """读取电子表格数据"""
  17. tenant_access_token = self.get_tenant_access_token()
  18. url = f"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/{spreadsheet_token}/values_batch_get"
  19. headers = {
  20. "Content-Type": "application/json; charset=utf-8",
  21. "Authorization": f"Bearer {tenant_access_token}"
  22. }
  23. params = {
  24. 'ranges': sheet_id,
  25. }
  26. data = request_get(request_url=url, headers=headers, params=params)
  27. values = []
  28. if data is not None:
  29. try:
  30. values = data['data']['valueRanges'][0].get('values')
  31. except:
  32. values = []
  33. return values
  34. if __name__ == '__main__':
  35. sheet_info = config_.SHEET_INFO['汉语常用词汇表']
  36. FeiShuHelper().get_data(spreadsheet_token=sheet_info.get('spreadsheet_token'), sheet_id=sheet_info.get('sheet_id'))