Centrum skryptów - Microsoft office

Jak zaplanować zdarzenie całodzienne w programie Microsoft Outlook?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak zaplanować zdarzenie całodzienne w programie Microsoft Outlook?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak zaplanować zdarzenie całodzienne w programie Microsoft Outlook?

-- RL

Cześć Skrypciarze! Pytanie

Cześć, RL. Znacie takie powiedzenie, że „każdy ma swoje pięć minut” w życiu? Na pewno, ale lepiej wyjaśnię, o co chodzi. Wcześniej czy później dla każdego przyjdzie taki czas, kiedy dla odmiany nagle wszystko zacznie się układać. Wyobraźcie sobie, że to dotyczy nawet Skrypciarzy.

A dlaczego jest to dla mnie tak niezwykły dzień? Już wyjaśniam. Od dawna myślałem, jak by to zrobić, żeby w ciągu najbliższych tygodni zaprezentować Wam skrypt, który doda Zimową Olimpiadę Skrypciarską 2008 (j.ang.) do Waszego kalendarza programu Outlook; to pomogłoby uniknąć wielu problemów, z jakimi mieliśmy do czynienia w zeszłym roku, kiedy to wiele osób pojawiało się w środku zawodów, już po zakończeniu wielu konkurencji. Szukałem więc dobrej wymówki, żeby pokazać wam ten skrypt i wyjaśnić, jak działa. I wtedy nagle dostałem pytanie właśnie w tej sprawie. Jak już mówiłem, każdy ma swoje pięć minut.

Uwaga. Prawdę mówiąc zawsze miałem nadzieję, że jak już nadejdzie to moje pięć minut, będzie dotyczyło czegoś bardziej ekscytującego, niż skrypt dotyczący planowania zdarzeń całodziennych w programie Microsoft Outlook. Z drugiej strony, patrząc na zwykłe dni mojego żywota, cieszę się i z takich pięciu minut.

Aby obietnicy stało się zadość, przedstawiam skrypt planujący zdarzenie całodzienne w programie Outlook:

Const olAppointmentItem = 1

Const olRecursDaily = 0



Set objOutlook = CreateObject("Outlook.Application")

Set objAppointment = objOutlook.CreateItem(olAppointmentItem)



objAppointment.Start = #2/15/2008#

objAppointment.AllDayEvent = True 

objAppointment.Subject = "2008 Winter Scripting Games"

objAppointment.Body = _

    "2008 Winter Scripting Games, February 15th through March 3rd in the TechNet Script Center."

objAppointment.Location = "https://www.microsoft.com/technet/scriptcenter/funzone/games/default.mspx"

objAppointment.ReminderMinutesBeforeStart = 15

objAppointment.ReminderSet = True



Set objRecurrence = objAppointment.GetRecurrencePattern

objRecurrence.RecurrenceType = olRecursDaily

objRecurrence.PatternStartDate = #2/15/2008#

objRecurrence.PatternEndDate = #3/3/2008#

 

objAppointment.Save

Mamy już skrypt, więc teraz trzeba wyjaśnić jego działanie.

Zaczynamy od zdefiniowania pary stałych: olAppointmentItem oraz olRecursDaily. Stałą olAppointmentItem zastosujemy w celu poinformowania programu Outlook, że chcemy zaplanować termin (a nie spotkanie), a stałą olRecursDaily w celu poinformowania programu Outlook, że ten właśnie termin powtarza się codziennie. Zauważcie, że drugi warunek jest konieczny, ponieważ nasze całodniowe zdarzenie (Olimpiada Skrypciarska) trwa kilka dni. Jeżeli chcemy napisać skrypt dotyczący tylko jednego dnia, wtedy opuszczamy część o definiowaniu stałej olRecursDaily. Można także opuścić część na temat wzorca cyklu, ale o tym opowiem później.

Po zdefiniowaniu stałych tworzymy wystąpienie obiektu Outlook.Application, a następnie używamy metody CreateItem w celu utworzenia nowego, „pustego” terminu. Do tego posłużą nam poniższe dwa wiersze kodu:

Set objOutlook = CreateObject("Outlook.Application")

Set objAppointment = objOutlook.CreateItem(olAppointmentItem)

Po utworzeniu tego pustego terminu przypisujemy wartości do właściwości tego terminu.

  • Start. Jest to data startowa dla naszego zdarzenia całodziennego. Zauważcie, że data 15 lutego 2008 r. otoczona jest znakami numeru: #2/15/2008#. To pomaga zagwarantować, że wartość będzie postrzegana jako data, a nie jako ciąg lub równanie matematyczne. I jeszcze jedno: ponieważ jest to zdarzenie całodzienne, nie musimy uwzględniać godziny, wystarczy data.
  • AllDayEvent. Jak można się było spodziewać, to jest element kluczowy w tworzeniu zdarzenia całodziennego; należy się upewnić, że właściwość AllDayEvent ma wartość True.
  • Subject. Ta właściwość jest bardzo intuicyjna; to po prostu wiersz tematu dla terminu Outlook. W naszym przypadku tematem jest 2008 Winter Scripting Games.
  • Body. Ta właściwość też jest prosta: to treść terminu, miejsce na szczegółowe informacje (o dowolnym poziomie szczegółowości) dotyczące terminu.
  • Location. Zazwyczaj jest to fizyczna lokalizacja, w której zdarzenie ma mieć miejsce. A ponieważ Olimpiada Skrypciarska odbywa się w trybie on line, umieściliśmy w tym miejscu adres witryny internetowej Olimpiady: https://www.microsoft.com/technet/scriptcenter/funzone/games/default.mspx.
  • ReminderMinutesBeforeStart. 15 minut przed rozpoczęciem Olimpiady program Outlook wyświetli ostrzeżenie. Jeżeli potrzebujecie więcej czasu, należy odpowiednio ustawić właściwość ReminderMinutesBeforeStart. Przykładowo: załóżmy, że chcecie otrzymać powiadomienie dwie godziny wcześniej. Dwie godziny to 120 minut, wiec wartość właściwości ReminderMinutesBeforeStart ustawiamy na 120. Jeżeli przypomnienie nie jest potrzebne, nie trzeba ustawiać ani tej właściwości, ani właściwości ReminderSet.
  • ReminderSet. Ta właściwość tak naprawdę ustawia przypomnienie dla terminu. Jeżeli chcemy skonfigurować przypomnienie dla naszego zdarzenia, należy uwzględnić tę właściwość i ustawić jej wartość na True. Samo ustawienie właściwości ReminderMinutesBeforeStart nie załatwi sprawy.

Jeżeli nasze zdarzenie całodzienne ma miejsce jednego dnia, są to już wszystkie właściwości, które należy skonfigurować. Jak zauważyłem wcześniej jednakże, Olimpiada Skrypciarska trwa kilka dni. Dlatego też konieczne jest także wykonanie poniższego wiersza kodu:

Set objRecurrence = objAppointment.GetRecurrencePattern

objRecurrence.RecurrenceType = olRecursDaily

objRecurrence.PatternStartDate = #2/15/2008#

objRecurrence.PatternEndDate = #3/3/2008#

Konfigurujemy teraz wzorzec cyklu dla naszego zdarzenia całodziennego; możemy to zrobić za pomocą metody GetRecurrencePattern, która pobierze obiekt Recurrence dla naszego terminu. Nasze zdarzenie całodzienne ma miejsce codziennie, więc wartość RecurrenceType ustawiamy jako stałą olRecursDaily. Czy są jeszcze jakieś inne typy cykli, które możemy zastosować? Oczywiście, że tak! Więcej informacji znajduje się w witrynie MSDN Outlook VBA Language Reference (j.ang.). Olimpiada Skrypciarska zaczyna się 15 lutego 2008 r., a kończy 3 marca 2008 r., więc przypisujemy te daty odpowiednio do właściwości PatternStartDate oraz PatternEndDate.

To chyba wszystko, co musimy zrobić. Może oprócz wywołania metody Save w celu dodania terminu do naszego kalendarza programu Outlook:

objAppointment.Save

Po otwarciu naszego kalendarza programu Outlook powinniśmy zobaczyć nasze zdarzenie całodzienne umieszczone na liście każdego dnia od 15 lutego do 3 marca:

Natomiast po otwarciu cykli tych terminów powinniśmy zobaczyć widok podobny do poniższego:

Nie, podczas tej Olimpiady Skrypciarskiej nie ma żadnych wymówek dla spóźnialskich!

To powinno wystarczyć, RL; dzięki za to pytanie i za moje pięć minut. Ciekawe, czy jeszcze kiedyś przydarzy mi się coś takiego.

 Do początku strony Do początku strony

Centrum skryptów - Microsoft office