从零到自动化的完整指南
目录导读
- 为什么要用脚本提醒会议?——解决时间管理痛点
- 脚本编写前的准备工作——工具与思路
- 核心代码实战:三种主流方案
- Windows批处理脚本
- Python脚本(跨平台)
- Mac/iOS快捷指令
- 进阶技巧:集成日历与自动弹窗
- 常见问题与避坑指南
- 让脚本真正为你工作
为什么要用脚本提醒会议?
问:我手机日历已经有提醒功能了,为什么还要写脚本?

答: 手机提醒存在三大缺陷:
- 不直观——会议前5分钟弹个通知,你可能正全屏写代码/做PPT,直接忽略
- 无法自动化操作——不会自动打开会议链接、静音音乐、调出笔记
- 跨设备不同步——公司电脑、个人手机、平板之间的提醒有时差
而一个定制脚本能做到:
- 全屏强制提醒:无论你在做什么,直接弹窗“会议开始!跳转链接?”
- 自动准备工作:提前30秒打开Zoom/Teams,静音系统声音,准备好文档
- 日志记录:统计你迟到了多少次(虽然扎心但有效)
脚本编写前的准备工作
工具清单:
- Windows用户:记事本 +
cmd/ PowerShell - Mac/Linux用户:终端 +
bash或zsh - 全平台通用:Python 3.x(推荐有conda或venv环境)
- 额外助手:
curl(用于调用API)、cron(Linux定时任务)或任务计划程序(Windows)
核心思路: 脚本 = 触发条件(时间) + 动作(弹窗/播放声音/打开链接) + 重复周期(如果是固定会议)
核心代码实战:三种主流方案
Windows批处理脚本(.bat)
适用于:不会装Python、只要简单弹窗提醒的初级用户
@echo off REM 会议提醒脚本 - 会议名称:周会 set meeting_name=周会(10:00-11:00) set meet_link=https://meeting.tencent.com/dm/XXXXX REM 弹窗提醒 msg * “紧急:%meeting_name% 将在5分钟后开始!点击确定即可” start %meet_link% REM 可选:播放系统声音 echo ^G
使用方法:
- 新建文本文档,粘贴代码,把
meet_link换成你的链接 - 另存为
meeting_reminder.bat(注意后缀是.bat) - 用Windows任务计划程序(Task Scheduler)设定10:00执行
*问:`msg 弹窗被系统拦截怎么办?** **答:** 改为powershell -Command "& {Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('会议开始') }"`(需管理员权限)
Python脚本(跨平台且强大)
适用于:有一定编程基础、需要复杂功能(读取日历、自动加入会议)
import datetime
import os
import sys
import webbrowser
# 配置区——改成你的会议日程
meetings = [
{
"name": "每日站会",
"time": "09:30",
"link": "https://zoom.us/j/1234567890",
"lead_time_minutes": 3 # 提前3分钟提醒
},
{
"name": "周会",
"time": "14:00",
"link": "https://teams.microsoft.com/l/meetup-join/XXXXX",
"lead_time_minutes": 5
}
]
def check_meetings():
now = datetime.datetime.now()
current_time = now.strftime("%H:%M")
for meeting in meetings:
# 计算提醒时间
target_time = datetime.datetime.strptime(meeting["time"], "%H:%M")
delta = datetime.timedelta(minutes=meeting["lead_time_minutes"])
reminder_time = (target_time - delta).strftime("%H:%M")
if current_time == reminder_time:
# 弹窗(跨平台方案)
title = f"会议提醒:{meeting['name']}"
message = f"还有{meeting['lead_time_minutes']}分钟开会!点击打开链接"
# Windows弹窗
if sys.platform == "win32":
from win10toast import ToastNotifier
toaster = ToastNotifier()
toaster.show_toast(title, message, duration=10)
# Mac弹窗
elif sys.platform == "darwin":
os.system(f'osascript -e \'display notification "{message}" with title "{title}"\'')
# Linux弹窗
else:
os.system(f'notify-send "{title}" "{message}"')
# 自动打开链接
webbrowser.open(meeting["link"])
return True
return False
if __name__ == "__main__":
check_meetings()
部署方法:
- 使用
crontab(Linux/Mac)或任务计划程序(Windows)每分钟执行一次 - 示例crontab命令:
* * * * * /usr/bin/python3 /path/to/script.py - 注意:建议设置
lead_time_minutes为2-5分钟,避免秒级触发错误
问:如何对接谷歌日历或Outlook日历?
答: 使用icalendar库解析日历订阅.ics文件,自动读取当天会议,代码示例参考Python icalendar文档。
Mac/iOS快捷指令(纯UI方案)
适用于:苹果生态用户、希望可视化操作
创建步骤:
- 打开“快捷指令”App,新建个人自动化
- 触发条件:选择“特定时间”(如10:00)
- 添加动作:
- “显示提醒”:输入“周会即将开始,点击查看链接”
- “打开URL”:输入会议链接
- “播报文本”(可选):让Siri说“你还有5分钟,该开会了”
- 关闭“运行前询问”——会议当天自动触发无需确认
优势: 手机电脑都能用,iCloud同步,无需写代码
劣势: 无法动态读取日历(除非用第三方如“脚本-日历”动作)
进阶技巧:集成日历与自动弹窗
核心难点: 脚本怎么知道今天几点有会?
最佳方案: 使用API读取企业日历(如微软Graph API)
# 伪代码示例——从Outlook日历获取会议
import requests
from datetime import datetime
# 配置Azure AD应用
tenant_id = "你的租户ID"
client_id = "应用ID"
client_secret = "应用密钥"
# 获取Access Token
def get_token():
url = f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
data = {
"client_id": client_id,
"scope": "https://graph.microsoft.com/.default",
"client_secret": client_secret,
"grant_type": "client_credentials"
}
response = requests.post(url, data=data)
return response.json()["access_token"]
def get_upcoming_meetings():
token = get_token()
headers = {"Authorization": f"Bearer {token}"}
url = "https://graph.microsoft.com/v1.0/me/events?$top=5&$orderby=start/dateTime"
response = requests.get(url, headers=headers)
upcoming = []
for event in response.json()["value"]:
start_time = datetime.fromisoformat(event["start"]["dateTime"])
if start_time > datetime.now():
upcoming.append({
"subject": event["subject"],
"start": start_time,
"link": event.get("onlineMeetingUrl", "")
})
return upcoming
提醒逻辑: 每分钟检查一次即将发生的会议,若当前时间在 start - lead_time 与 start 之间,则触发提醒。
注意: 需要企业管理员授权,个人账户可申请试用但有限额,个人用户建议使用iCal格式导出到本地解析。
常见问题与避坑指南
Q1:脚本弹窗被浏览器拦截?
A: 别用alert()这种浏览器弹窗,用系统级弹窗(如Windows Toast通知、macOS notification),或用第三方库plyer。
Q2:脚本在后台运行时CPU占用高?
A: 要设置好循环间隔——不要用while True每秒检查,推荐每分钟检查一次,在Python中加入time.sleep(60)。
Q3:多人协作的项目怎么共享提醒?
A: 将脚本放在共享文件夹(如OneDrive/谷歌Drive),设置同步,但注意各系统路径差异,也可以用Slack Webhook发消息提醒。
Q4:会议时间跨时间段(如从今天下午延续到第二天)?
A: 脚本读取时考虑start_time和end_time,只在start_time前5分钟提醒一次,但日常会议也建议设置每天一次。
让脚本真正为你工作
写一个会议提醒脚本,本质上是对时间管理的自动化升级。核心原则是“最小干预、最大效果”——不要写完脚本就不管了,每季度检查一次:
- 是否有人事变动需要更新会议列表?
- 是否因为夏令时导致提醒时间偏移?
- 是否因为换了电脑导致脚本失效?
最后一步行动: 今天挑一种方案(推荐Windows用户选.bat,全平台选Python),把明天的一个会议设置好,体验一次“被脚本拽进会议室”的爽快感,如果失败了,也别急着查错——先手动改个时间再试试,调试脚本和开会一样,第一次总是最难的,但自动化之后,你将永远不想回到手动记忆的日子。