Ver Fonte

增加了飞书提醒
增加了提醒的定时任务

罗俊辉 há 1 ano atrás
pai
commit
be4355e84e
2 ficheiros alterados com 113 adições e 18 exclusões
  1. 96 18
      feishu/feishu.py
  2. 17 0
      sc.py

+ 96 - 18
feishu/feishu.py

@@ -6,24 +6,81 @@ 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.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(self):
+    def insert_columns_rows(self, sheet_id, major_dimension, start_index, end_index):
         """
         写入飞书表格
-        :return:
+        :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(response.json()['msg'])
+
+    def insert_value(self, sheet_id, ranges, values):
         """
-        return self.document_url
+        update
+        :param sheet_id:
+        :param ranges:
+        :param values:
+        """
+        update_values_url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/" \
+                            + self.document_token + "/values_batch_update"
+        headers = {
+            "Authorization": "Bearer " + get_app_token(),
+            "Content-Type": "application/json; charset=utf-8"
+        }
+        body = {
+            "valueRanges": [
+                {
+                    "range": sheet_id + "!" + ranges,
+                    "values": values
+                },
+            ],
+        }
+        response = requests.request("POST", url=update_values_url, headers=headers, json=body)
+        print(response.json())
 
     def bot(self, platform_name, flag=1):
         """
@@ -58,27 +115,48 @@ class Feishu(object):
                         {
                             "tag": "div",
                             "text": {
-                                "content": "**{}**\n自动导出失败 !!!".format(
-                                    platform_name
-                                ),
+                                "content": "**{}**\n自动导出失败 !!!".format(platform_name),
                                 "tag": "lark_md",
                             },
                         },
                     ],
-                    "header": {"title": {"content": "We分析: 报警  ❌", "tag": "plain_text"}},
+                    "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 response.status_code == 200:
-        #     return True
-        # else:
-        #     print("飞书通知失败")
-        #     return
+
+    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()
-#     F.bot("票圈视频", 2)
+if __name__ == "__main__":
+    F = Feishu()
+    value = [[0]]
+    F.insert_value(sheet_id="gwzBOM", values=value, ranges="D1:F1")

+ 17 - 0
sc.py

@@ -0,0 +1,17 @@
+"""
+Created on Tue Jan 16th
+"""
+import schedule
+
+from feishu.feishu import Feishu
+
+
+def run():
+    """
+    提醒代码
+    """
+    Feishu().remind()
+
+
+if __name__ == '__main__':
+    schedule.every().day.at("14:00").do(run)