123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- """
- feishu python方法
- """
- import json
- import requests
- import datetime
- 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"]
- return tenant_access_token
- class Feishu(object):
- """
- feishu Python Object
- """
- def __init__(self):
- self.document_url = "https://w42nne6hzg.feishu.cn/sheets/C1Qrsa4HWh6bzEtv7aocrFlAnad"
- self.robot_url = "https://open.feishu.cn/open-apis/bot/v2/hook/34e2fdbc-0649-44d3-b5ce-b28b38cca1db"
- self.headers = {"Content-Type": "application/json"}
- self.document_token = "C1Qrsa4HWh6bzEtv7aocrFlAnad"
- def insert_columns_rows(self, sheet_id, major_dimension, start_index, end_index):
- """
- 写入飞书表格
- :param sheet_id: 表的id
- :param major_dimension:行或者列, ROWS, COLUMNS
- :param start_index:开始位置
- :param end_index:结束位置
- """
- insert_columns_url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" \
- + self.document_token + "/insert_dimension_range"
- headers = {
- "Authorization": "Bearer " + get_app_token(),
- "Content-Type": "application/json; charset=utf-8",
- }
- body = {
- "dimension": {
- "sheetId": sheet_id,
- "majorDimension": major_dimension, # 默认 ROWS ,可选 ROWS、COLUMNS
- "startIndex": start_index, # 开始的位置
- "endIndex": end_index # 结束的位置
- },
- "inheritStyle": "AFTER" # BEFORE 或 AFTER,不填为不继承 style
- }
- response = requests.post(url=insert_columns_url, headers=headers, json=body, verify=False)
- print(json.dumps(response.json(), ensure_ascii=False, indent=4))
- def insert_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)
- headers = {
- "Authorization": "Bearer " + get_app_token(),
- 'contentType': 'application/json'
- }
- 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 bot(self, platform_name, flag=1):
- """
- 飞书机器人,在群里报警用
- :param platform_name: 小程序的名称
- :param flag: 通知 or 报警, 默认为1, 通知
- :return:
- """
- if flag == 1:
- payload = {
- "msg_type": "interactive",
- "card": {
- "elements": [
- {
- "tag": "div",
- "text": {
- "content": "**{}**\n数据自动导出完成;\n完成时间是:{}。".format(
- platform_name, datetime.datetime.now().__str__()
- ),
- "tag": "lark_md",
- },
- },
- ],
- "header": {"title": {"content": "We分析: 通知 ✅", "tag": "plain_text"}},
- },
- }
- else:
- payload = {
- "msg_type": "interactive",
- "card": {
- "elements": [
- {
- "tag": "div",
- "text": {
- "content": "**{}**\n自动导出失败 !!!".format(platform_name),
- "tag": "lark_md",
- },
- },
- ],
- "header": {
- "title": {"content": "We分析: 报警 ❌", "tag": "plain_text"}
- },
- },
- }
- w = requests.request(
- "POST", url=self.robot_url, headers=self.headers, data=json.dumps(payload)
- )
- print(w.json())
- def remind(self):
- """
- 飞书提醒机器人
- :return: None
- """
- payload = {
- "msg_type": "interactive",
- "card": {
- "elements": [
- {
- "tag": "div",
- "text": {
- "content": "扫码通知:记得要扫码导出we分析, ",
- "tag": "lark_md",
- },
- },
- ],
- "header": {"title": {"content": "We分析: 提醒 ⏰", "tag": "plain_text"}},
- },
- }
- w = requests.request(
- "POST", url=self.robot_url, headers=self.headers, data=json.dumps(payload)
- )
- print(w.json())
- # if __name__ == "__main__":
- # F = Feishu()
- # for i in range(100):
- # value = [[i + 1] + [random.randint(0, 100) for item in range(7)]]
- # F.insert_value(sheet_id="gwzBOM", values=value, ranges="A2:G2")
|