整理好每个月的值日人员信息到excel表
先整理好当月内的所有值日人员信息,其中相应人员的飞书用户ID,可参照下方链接进行获取;
飞书获取user id、群id和消息id的方法 - 飞书官网
创建飞书机器人
在一个所有值班人员的飞书群里,创建一个机器人,并获取该机器人的Webhook地址;
编写Python脚本
import pandas as pd
import requests
import json
from datetime import datetime
# 飞书机器人的Webhook URL
webhook_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/ec176f9c-1f4d-4783-bcb3-74d827fb5cd6'
# 读取值日表(假设是Excel文件)
duty_schedule_path = 'E:/文档/00_software document/05_Pycharm/06_TG电子实验室5S整理/duty_schedule.xlsx' # 根据需要改为本地文件的地址,如果是CSV文件,改为 'duty_schedule.csv'
duty_schedule = pd.read_excel(duty_schedule_path, dtype={'飞书用户ID': str})
# 如果是CSV文件,使用 pd.read_csv(),获取duty_schedule.xlsx 中的Dataframe数据结构数据,dtype 是将飞书user_ID 一列由数值格式改为字符串格式;
# 获取今天的日期
today = datetime.now().strftime('%Y/%m/%d')
# 查找今天的值班员工
today_duty = duty_schedule[duty_schedule['日期'] == today] # 查找duty_schedule 中日期为今天的这一帧数据;
if not today_duty.empty:
# 获取值班员工的姓名和飞书用户ID
employee_name = today_duty.iloc[0]['员工姓名'] # 获取这一帧数据汇总,员工姓名位置的数据
employee_feishu_id = today_duty.iloc[0]['飞书用户ID']
print(employee_name)
# 构造消息内容(飞书支持文本、Markdown等多种格式)
message = {
"msg_type": "text",
"content": {
"text": f"值班提醒:今天是 {employee_name} <at user_id=\"{employee_feishu_id}\"></at>的值班日,请按时到岗。"
}
}
# 给指定用户发送消息
headers = {'Content-Type': 'application/json'}
response = requests.post(webhook_url, headers=headers, data=json.dumps(message))
# 检查是否发送成功
if response.status_code == 200:
print(f"消息已发送给 {employee_name}(飞书用户ID:{employee_feishu_id})")
else:
print(f"消息发送失败,状态码:{response.status_code}")
else:
print("今天没有值班员工。")
Windows设置自动运行脚本
通过Windows自带的 任务计划程序功能,创建任务,设置好触发器,即可设置定时自动运行;