轮班制 Python+Sever酱推送值班提醒
利用python+sever酱实现排班信息微信自动推送提醒,方便广大朋友们知道自己的岗位班次

1、根据自己所在公司的轮班制度确认好员工的排班(本文以excel排班为例),如图:

2、编写排班相关代码:
#导入模块
import datetime
import xlrd
from xlrd import xldate_as_tuple
# 解析excel文件
def read_excel(filename, name, to_date):# 打开文件workbook = xlrd.open_workbook(filename)# 获取所有sheet# print(workbook.sheet_names())sheetname = workbook.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容ws = workbook.sheet_by_name(sheetname)context = []# 获取单元格内容# j = 2 早班 3 正常班 4 正常班2 5 夜班 6 休息 7 巡检for i in range(ws.nrows):if ws.cell(i, 0).ctype == 3:date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0)).strftime('%m-%d')#to_date = '3-24'if date == to_date:for j in range(ws.ncols):if ws.cell(i, j).ctype == 3:date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0))context.append("%s月%s日" % (date.strftime('%m'), date.strftime('%d')))#print(date)elif name in ws.cell(i, j).value:if j == 2:context.append("早班")elif j == 3:context.append("正常班")elif j == 4:context.append("正常班2")elif j == 5:if ws.cell(i, 7).value != '':context.append("夜班,记得巡检")else:context.append("夜班")elif j == 6:text = "明天休息"d = 1if name in ws.cell(i + d, j).value:while True:if name in ws.cell(i + d, j).value:d = d + 1else:breakcontext.append("连休" + str(d) + "天哦")else:context.append("休息")return context
3、设置排班提醒
#导入模块
import os
import sys
import requests
# 发送相关信息
def send_Wechat():# 获取当天与第二天的日期tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m-%d')today = datetime.datetime.today().strftime('%m-%d')# 遍历当前目录文件名# 获取当前月份month = "%s月" % datetime.datetime.now().strftime('%m')filename = ""filename1 = ""for dir in os.listdir(sys.path[0] + '/'):if month in dir:filename = dirfilename1 = dir# 跨月度切换班表if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') != month:for dir in os.listdir(sys.path[0] + '/'):if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') in dir:filename1 = dirperson = get_name()# 遍历所有人员并发送相关信息for p in person:name = p[0]KEY = p[1]today_info = read_excel(filename, name, today)#print(today_info)today_context = ""for text in today_info:today_context = today_context + " " + texttomorrow_info = read_excel(filename1, name, tomorrow)# print(tomorrow_info)tomorrow_context = ""for text in tomorrow_info:tomorrow_context = tomorrow_context + " " + textcontext = '''> 今天是:''' + today_context + \'''\n> 明天是:''' + tomorrow_contexttitle = "今日班次"URL = "http://sc.ftqq.com/" + KEY + ".send?text=" + title + "&desp=" + context# print(URL)requests.post(URL)
4、获取Sever酱调用代码生成SCKEY

# 获取人员列表
def get_name():xml = sys.path[0] + '/name.xml'root = etree.parse(xml)person = []for names in root.getroot():module = etree.ElementTree(names)name = module.xpath('//names/@name')[0]for k in names:key = k.textperson.append([name, key])return person
整体代码如下
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# __author__ :
# date : 2020/09
# version: 2.0import datetime
import os
from lxml import etree
import requests
import sys
import xlrd
from xlrd import xldate_as_tuple
import weather# 解析excel文件
def read_excel(filename, name, to_date):# 打开文件workbook = xlrd.open_workbook(filename)# 获取所有sheet# print(workbook.sheet_names())sheetname = workbook.sheet_names()[0]# 根据sheet索引或者名称获取sheet内容ws = workbook.sheet_by_name(sheetname)context = []# 获取单元格内容# j = 2 早班 3 正常班 4 正常班2 5 夜班 6 休息 7 巡检for i in range(ws.nrows):if ws.cell(i, 0).ctype == 3:date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0)).strftime('%m-%d')#to_date = '3-24'if date == to_date:for j in range(ws.ncols):if ws.cell(i, j).ctype == 3:date = datetime.datetime(*xldate_as_tuple(ws.cell(i, 0).value, 0))context.append("%s月%s日" % (date.strftime('%m'), date.strftime('%d')))#print(date)elif name in ws.cell(i, j).value:if j == 2:context.append("早班")elif j == 3:context.append("正常班")elif j == 4:context.append("正常班2")elif j == 5:if ws.cell(i, 7).value != '':context.append("夜班,记得巡检")else:context.append("夜班")elif j == 6:text = "明天休息"d = 1if name in ws.cell(i + d, j).value:while True:if name in ws.cell(i + d, j).value:d = d + 1else:breakcontext.append("连休" + str(d) + "天哦")else:context.append("休息")return context# 发送相关信息
def send_Wechat():# 获取当天与第二天的日期tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m-%d')today = datetime.datetime.today().strftime('%m-%d')# 遍历当前目录文件名# 获取当前月份month = "%s月" % datetime.datetime.now().strftime('%m')filename = ""filename1 = ""for dir in os.listdir(sys.path[0] + '/'):if month in dir:filename = dirfilename1 = dir# 跨月度切换班表if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') != month:for dir in os.listdir(sys.path[0] + '/'):if "%s月" % (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%m') in dir:filename1 = dir# 获取当天天气# wea = ""# for x in weather.WeatherIterable(['广州']):# wea = x# 获取需要发送人员名单person = get_name()# 遍历所有人员并发送相关信息for p in person:name = p[0]KEY = p[1]today_info = read_excel(filename, name, today)#print(today_info)today_context = ""for text in today_info:today_context = today_context + " " + texttomorrow_info = read_excel(filename1, name, tomorrow)# print(tomorrow_info)tomorrow_context = ""for text in tomorrow_info:tomorrow_context = tomorrow_context + " " + textcontext = '''> 今天是:''' + today_context + \'''\n> 明天是:''' + tomorrow_contexttitle = "今日班次"URL = "http://sc.ftqq.com/" + KEY + ".send?text=" + title + "&desp=" + context# print(URL)requests.post(URL)# 获取人员列表
def get_name():xml = sys.path[0] + '/name.xml'root = etree.parse(xml)person = []for names in root.getroot():module = etree.ElementTree(names)name = module.xpath('//names/@name')[0]for k in names:key = k.textperson.append([name, key])return personif __name__ == '__main__':send_Wechat()# test()
最后,想要添加天气提醒可在代码块导入相关模块
import weather


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
