Сохраните отмененные встречи в своем календаре для справки

Сохраните отмененные встречи в своем календаре для справки

Мне нравится отслеживать встречи даже после того, как они были отменены. Это помогает мне вернуться к просмотру активности, предпринятой по различным темам, и иногда объяснить, почему я не пошел на вашу встречу. (Например, «В то же время была повторяющаяся встреча, но председатель с тех пор отменил ее и удалил всю серию, а не только будущие».)

Я попробовал использовать скрипт, размещенный на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

Связанный контент