Мне нравится отслеживать встречи даже после того, как они были отменены. Это помогает мне вернуться к просмотру активности, предпринятой по различным темам, и иногда объяснить, почему я не пошел на вашу встречу. (Например, «В то же время была повторяющаяся встреча, но председатель с тех пор отменил ее и удалил всю серию, а не только будущие».)
Я попробовал использовать скрипт, размещенный наslipstick.comтак как несколько разных результатов поиска продолжали направлять меня обратно к той же статье. Однако, это не сработало для меня как надо. Есть ли более простой способ?
Вот копия этого сценария:
Sub CopyMeetingtoAppointment(oRequest As MeetingItem)
If oRequest.MessageClass <> "IPM.Schedule.Meeting.Canceled" Then
Exit Sub
End If
Dim oAppt As AppointmentItem
Dim cAppt As AppointmentItem
Set cAppt = oRequest.GetAssociatedAppointment(True)
Set oAppt = Application.CreateItem(olAppointmentItem)
'I added (Rule) to the subject so I could see the rule was working.
oAppt.Subject = "(Rule) Canceled: " & cAppt.Subject
oAppt.Start = cAppt.Start
oAppt.Duration = cAppt.Duration
oAppt.Location = cAppt.Location
oAppt.Display
oAppt.Save
Set oAppt = Nothing
Set cAppt = Nothing
End Sub
Вам нужно установить правило, которое будет соответствовать этому, и я думаю, что эта часть хороша:
решение1
Повозившись с ним, я нашел гораздо более простой способ скопировать событие календаря в элемент встречи: использовать метод фактического копирования. Я тестировал его в различных сценариях, особенно с повторяющимися встречами, и он работал безупречно. Я настроил его на удаление всех напоминаний и установил себя свободным на это время. Кроме того, я добавил заметку о том, кто отменил его. Если есть какие-либо другие улучшения, которые люди могут найти, я буду рад их найти.
Sub CopyMeetingToAppointment(oRequest As MeetingItem)
'Double-check in case of accidental run
If oRequest.MessageClass <> "IPM.Schedule.Meeting.Canceled" Then Exit Sub
'Declare the objects
Dim oAppt As AppointmentItem
Dim cAppt As AppointmentItem
Dim cancelMessage As String
'Create the objects
Set cAppt = oRequest.GetAssociatedAppointment(True)
Set oAppt = cAppt.Copy
'Create the cancel message
cancelMessage = vbNewLine & vbNewLine & " - - - - - - - - - - - - - - - - - - - " & vbNewLine & _
"Meeting was canceled by " & oRequest.SenderName & " <" & oRequest.SenderEmailAddress & "> on " & oRequest.ReceivedTime
'Modify the copied appointment
With oAppt
If UCase(Left(.Subject, 6)) = "COPY: " Then .Subject = Mid(.Subject, 7)
.Subject = "[BKP] " & .Subject
.Body = .Body & cancelMessage
.ReminderSet = False
.BusyStatus = olFree
.Save
End With
'Cleanup
Set oAppt = Nothing
Set cAppt = Nothing
End Sub