为什么我不能用 vbs 更改 outlook 中的与会者类型?

Why I can't change the attendee's type in outlook with vbs?

我正在编写一个自动预订会议室的脚本。但在最后一步,AppointmentItem 无法更改为 MeetingItem。这是代码:

Set myItem = myOlApp.CreateItem(1)  
myItem.MeetingStatus = olMeeting

myItem.Subject = "..."  
myItem.Location = "..."  
myItem.Start = #...#  
myItem.Duration = 90 

set myResourceAttendee = myItem.Recipients.Add("xxx@xxx.com")
myResourceAttendee.Type = olResource

myItem.Save
' myItem.Send

我以为我已经把Recipient的类型设置成"olResource"了,按照MS Docs也是一样的。但这就是我得到的:

我日历中的项目显示它仍然是 Appointment, and the resource I added is Required Attendee。

我手动设置成Resource后,就变成了Meeting。我不明白这是怎么发生的,以及我该如何解决这个问题。请帮我!非常感谢!!

顺便说一句,Outlook 版本是 Outlook 2016 (16.0.4849.1000) 32 位。

olMeetingolResource 等 Outlook 枚举值在 vbscript 中是未知的(相对于 Outlook-VBA)

你首先需要从文档中找出它们的数值。
例如 OlMeetingStatus enum 文档说明如下:

  • olMeeting - 1 - 会议已安排。

  • olMeetingCanceled - 5 - 预定的会议已取消。

  • olMeetingReceived - 3 - 已收到会议请求。

  • olMeetingReceivedAndCanceled - 7 - 预定的会议已取消但仍显示在用户的日历上。

  • olNonMeeting - 0 - 已安排没有与会者的约会项目。此状态可用于在日历上设置假期。

然后在 vbscript 中您可以定义自己的常量以匹配已知的枚举值

const olMeeting = 1 '<- define enum value here

dim myItem
Set myItem = myOlApp.CreateItem(1)  
myItem.MeetingStatus = olMeeting '<- use it here just like you would in VBA