You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python检查Outlook会议室可用性及解析FreeBusy输出?

解答你的Outlook会议室可用性检查疑问

我来帮你逐个理清这些关于Outlook FreeBusy API的问题,结合你现有的代码来看:

问题1:第一个字符是否代表00:00-00:30,输出对应整月?

没错!你调用的FreeBusy(pywintypeDate,30,True)里,第三个参数CompleteFormat=True会让API返回**pywintypeDate所在月份的完整月历忙闲信息**。每个字符对应第二个参数指定的30分钟时段,第一个字符就是该月第一天的00:00-00:30时段。字符串里的数字含义固定:

  • 0:空闲
  • 1:暂定占用
  • 2:忙碌
  • 3:外出

问题2:能否仅获取指定单日的可用性?

当然可以!只需要调整CompleteFormat参数为False,同时确保起始时间是你要查询当天的00:00。这样API会返回从起始时间开始的48个字符(刚好对应24小时,每个字符30分钟),也就是完整的单日忙闲数据。修改你的代码片段如下:

import win32com.client
import datetime
import pywintypes

oOutlook = win32com.client.Dispatch("Outlook.Application")
appt = oOutlook.CreateItem(1)
appt.Start = '2018-05-18 13:30'
appt.Subject = 'Follow Up Meeting'
appt.Duration = 30
appt.Location = '<name of meeting room>'
appt.MeetingStatus = 1
myRecipient = appt.Recipients.Add("<mail id of meeting room>")
# 注意这里要加括号,且方法首字母大写
myRecipient.Resolve()

my_date = datetime.date(2018,5,18)
# 设置起始时间为当天00:00
pywintypeDate = pywintypes.Time(datetime.datetime.combine(my_date, datetime.time.min))
# 第三个参数改为False,获取单日数据
availabilityInfo = myRecipient.FreeBusy(pywintypeDate,30,False)
# 截取前48个字符,就是当天的所有时段
daily_availability = availabilityInfo[:48]
print(daily_availability)

问题3:是否需要解析输出以检查特定时段的可用性?

是的,你需要通过计算目标时段对应的字符索引来判断是否空闲。举个例子,你要检查13:30-14:00的可用性:

  1. 计算该时段相对于当天00:00的分钟数:13*60 +30 = 810分钟
  2. 除以每个时段的长度30分钟:810//30 =27,得到字符索引为27(索引从0开始)
  3. 查看daily_availability[27]的值,如果是0就代表该时段空闲

对应的代码示例:

target_start = datetime.datetime(2018,5,18,13,30)
# 计算当天已过的分钟数
minutes_since_midnight = (target_start - datetime.datetime.combine(my_date, datetime.time.min)).total_seconds()//60
# 计算目标时段对应的字符索引
slot_index = int(minutes_since_midnight //30)
# 检查是否空闲
if daily_availability[slot_index] == '0':
    print("该时段空闲,可以预订!")
else:
    print("该时段忙碌,需要更换时段")

另外提醒下,你的原代码里myRecipient.resolve少了括号,且方法名首字母应该大写为Resolve(),否则收件人可能无法正确解析,会影响FreeBusy的查询结果。

内容的提问来源于stack exchange,提问作者avinashse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:22:57