首页
python
Win桌面应用自动化pywinauto
pywinauto遍历展示程序的所有菜单项
Python3使用串口
Python字符串处理
Python3实现配置文件差异对比(键值对key=value的形式)
正则
正则匹配两个字符之间的字符串
正则提取markdown中图片链接
正则表达式基本知识
字符串-正则实例
Python生成8位随机字符串的一些方法
python3批量ping检测
python3检测一批主机ip的tcp端口
Python3--DNS
3D人体骨架检测(mediapipe)
Python-网络
检测到win电脑断网就发出告警声音
Python编写的DNS服务可靠性测试程序
Python编写的TCP/UDP端口探测程序
Python抓包-Pyshark
并发扫描TCP、UDP端口
Python-DHCP
端口的问题以及绑定端口(Python)
VSCode编辑器
python远程开机工具
Pyhton3--Win注册表
开源IT运维项目
python知识点
Python开源运维项目集合
python3备份交换机配置
Python3使用snmp获取H3C交换机arp表
Python检测tcp端口状态并发送到企微群
Python3使用smtp发邮件
Python3使用smtp发邮件(带附件)
Python3拉取微软AD域所有用户信息
Python3使用微软AD域账号认证
自动更新公网域名的解析(阿里云)
每日定时推送Excel中排班表信息到企微群
Django
Django模板标签
Django在发送POST请求时返回403错误
Django-mysql数据库条件查询
uwsgi 配置 python virtualenv 虚拟环境目录 ( ini 配置)
常用收藏
python3数据类型转换
python处理文本
txt每行一个字符串_用英文逗号连接
txt_匹配并拆分出需要字符串
python获取日期时间
python执行linux命令的三种方式
python使用ssh连接到linux服务器执行命令
本文档由 内网文摘 发布,转载请注明出处
-
+
首页
每日定时推送Excel中排班表信息到企微群
#### 说明 Windows10系统 + qywxpush.exe程序 + info.xlsx文件 企微官方文档: [群机器人配置说明](https://work.weixin.qq.com/api/doc/90000/90136/91770 "群机器人配置说明") 读取当前目录下 推送消息excel文件(info.xlsx),根据当前日期搜索到对应行数的信息推送 1.系统时间要准确 2.程序运行时会依次匹配每行第一列的日期,如和当前系统时间为同一天会发送第二列中的内容为消息,并@第三列中对应人员(注册企微的手机号) 3.qywxpush.exe程序和info.xlsx表在同一个目录 #### info.xlsx文件修改 第一行1列为企微群机器人webhook,第一行的第3列要有任意的数据不为空 第一列日期,单元格不可为空,鼠标向下拖动单元格右下角会自动扩展日期数字,如下图 第三列填写要@的人员(注册企微的手机号),可为空,多个人员时用英文逗号分隔 示例内容如下 ![](/media/202109/2021-09-17_135110.png) #### win添加计划任务 程序或脚本 填写 C:\Users\win10\Desktop\企业微信机器人推送\qywxpush.exe 起始于 填写 C:\Users\win10\Desktop\企业微信机器人推送\ info.xlsx文件所在位置 C:\Users\win10\Desktop\企业微信机器人推送\info.xlsx #### qywxpush.exe程序下载 [【附件】qywxpush.exe](/media/attachment/2021/09/qywxpush.exe) #### 源码 ```python # -*- coding: UTF-8 -*- import os import xlrd import time import datetime import json import requests ''' win做计划任务,读取当前目录下 排班表excel文件,根据当前日期搜索对应行数及推送信息 1.系统时间要准确 2.当前目录下info.xlsx文件第一行1列为企微群机器人webhook,第3列要有任意的数据不为空 3.程序运行时会依次匹配每行第一列的日期,如和当前系统时间为同一天会发送第二列内容为消息,并@第三列中对应人员(注册企微的手机号) ''' class TongJi: def __init__(self): self.Startmain() def Startmain(self): # 文件位置 #ExcelFile = xlrd.open_workbook(r'C:\Users\Administrator\Desktop\TestData.xlsx') # 获取目标EXCEL文件sheet名 #print ExcelFile.sheet_names() Break_page = xlrd.open_workbook("info.xlsx") #Break_table = Break_page.sheet_by_index(0) #通过索引顺序获取一个工作表。通过名称获取:data.sheet_by_name(u'Sheet1') # 获取目标EXCEL文件sheet名 print(Break_page.sheet_names()) # 获取workbook中所有的表格名 sheets = Break_page.sheet_names() # sheets是一个列表对象 # 获取当前时间并格式化成2016-03-20 11:45:39形式 #print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())) ymd = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()).split(" ")[0] print(ymd) #ymd格式 2021-02-20 # 搜索excel表中当前日期所在行数 for sheet123 in sheets: Break_table = Break_page.sheet_by_name(sheet123) #Break_table = sheet_by_name(i) # 通过索引顺序获取一个工作表。通过名称获取:data.sheet_by_name(u'Sheet1') Break_value = Break_table.row_values(0) #获取行和整列的值(数组),table.row_values(i),table.col_values(i) Break_value2 = Break_table.row_values(1) # 获取目标EXCEL文件sheet名 #print(Break_page.sheet_names()) # 获取sheet行数 print(Break_table.nrows) #获取行数和列数:nrows=table.nrows ,ncols=table.ncols # print(Break_value) # print(Break_value2) # print(Break_table.cell(1, 0).value) # print(Break_table.cell(1, 1).value) # Break_page.close() for i in range(Break_table.nrows): if i == 0: Webhook = Break_table.cell(0, 0).value pass else: if Break_table.cell(i, 0).ctype == 3: date = xlrd.xldate_as_tuple(Break_table.cell(i, 0).value, 0) #print("date", date, type(date)) value = datetime.datetime(*date) #print("表中日期", value, type(value)) value = value.strftime('%Y-%m-%d %H:%M:%S').split(" ")[0] # 格式为 str if ymd == value: #单元格: a1=table.cell(0,0).value ,c4=table.cell(2,3).value print("匹配到") print(value) print(Break_table.cell(i, 1).value) # try: # #print(Break_table.cell(i, 2).ctype) # print(str(Break_table.row(i))) # print(str(Break_table.row(i)[2].value)) # if str(Break_table.row(i)[2].value) == u'': # print("@为空") # else: # print("@不为空") # print(Break_table.cell(i, 2).value) # except Exception as e: # print(e) self.qiyeweixin_text(Webhook, Break_table.cell(i, 1).value, Break_table.cell(i, 2).value) return else: print(value) def qiyeweixin_text(self, Webhook, msg, *args): # 输出日记,生产环境会输出到指定目录 #logger.info("[qiyeweixin_text] 该 APP 执行参数为: {msg}", msg=msg) # 将此处的机器人hook地址替换为你创建的机器人地址即可 # webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=12345678901234567890" webhook_url = Webhook # 普通 text 文本类型消息 # msgtype: 消息类型,此处为 text # content: 消息内容,长度 < 2048字节,UTF-8 编码 # mentioned_list: @某个成员,或者@all # mentioned_mobile_list: @手机号码 # text_push_content = """广州今日天气:29度,大部分多云,降雨概率:60% # """ if args: mentioned_mobile_list = args[0].split(",") else: mentioned_mobile_list = [] text_data = { "msgtype": "text", "text": { "content": msg, "mentioned_mobile_list": mentioned_mobile_list } } # 注意:data发送时,一定要是json格式,另外,字符编码需要是utf-8 postdata = str(json.dumps(text_data)).encode('utf-8') r = requests.post(webhook_url, data=postdata) # 输出日记,生产环境会输出到指定目录 #logger.info("[qiyeweixin_text] 该 APP 执行返回为: {msg}", msg=r.text) # print(type(eval(r.text)), eval(r.text)) # 返回值,格式为: 状态码,返回内容 if eval(r.text)['errcode'] == 0: # 接口调用成功 print(r.text) else: print(r.text) TongJi() ```
local
2021年9月17日 17:45
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 LocalNetwork
LocalNetwork
是由mrdoc开源
LocalNetwork.cn
修改的在线文档系统,作为个人和小型团队的云笔记、文档和知识库管理工具。
如果此文档给你或你的团队带来了帮助,欢迎支持作者持续投入精力更新和维护!内网文摘 & LocalNetwork
>>>主页
logo
logo
下载Markdown文件
分享
链接
类型
密码
更新密码