1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .