Centrum skryptów - Microsoft Office

Jak przesortować elementy pobrane z folderu Microsoft Outlook?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

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 przesortować elementy pobrane z folderu Microsoft Outlook?

Cześć, Skrypciarze! Usiłuję napisać skrypt, który zajmie się moimi wiadomościami w skrzynce odbiorczej programu Outlook. Problem w tym, że muszę przesortować wszystkie te wiadomości według daty otrzymania i nie wiem jak to zrobić. Czy możecie mi w tym pomóc?

-- SL

Cześć, SL! Na pewno wielokrotnie się zastanawiałeś się jakim kolorem jesteśmy i myślałeś sobie sobie: „no, jego kolorem dominującym jest na bank czerwony.” Tym, którzy tak właśnie pomyśleli gratulujemy – mieliście rację! Dominującymi kolorami są u piszącego to Skrypciarza czerwony i żółty, a dopiero potem zielony i niebieski. Jesteście niesamowici!

Co to dokładnie oznacza? No w sumie nie wiemy, bo nie udało nam się być na specjalnej sesji przeprowadzanej przez Insights - mieliśmy właśnie spotkanie z TechNetowcami. Wiemy tylko, że jesteśmy „czerwoni”. Jeżeli wiecie co to dokładnie oznacza będziemy wdzięczni z info.

No dobra, dostaliśmy broszurkę:

Osoby z dominującą czerwienią lubią rywalizację, są pewne siebie, wymagające, zdeterminowane i wytrwałe. Cieszy mnie oczywiście, że ktoś udowodnił naukowo, to, co od dawna wiedziałem – że mam właśnie takie cechy charakteru. Myślę, że teraz mogę to już wpisać do CV. Jest to dodatkowo cenne szczególnie mając na uwadze jakimi nudziarzami są osoby z dominującym niebieskim (czyli na przykład Skrypciarka Jean Ross) – są to osoby ponure, nudne, jeżeli mają trudności w pracy to zawsze polegają na osobie z dominującym czerwonym. Ha!

Osoby czerwone (w przeciwieństwie do niebieskich oczywiście) znane są ponadto z umiejętności pisania skryptów, które sortują elementy znajdujące się w folderze Microsoft Outlook, szczególnie takich, które zwracają kolekcję elementów ze skrzynki odbiorczej (Inbox – ang.) i sortują je w chronologicznie w porządku malejącym:

On Error Resume Next



Const olFolderInbox = 6



Set objOutlook = CreateObject("Outlook.Application")



Set objNamespace = objOutlook.GetNamespace("MAPI")

Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)



Set colItems = objFolder.Items

colItems.Sort "ReceivedTime", True



For Each objItem in colItems

    Wscript.Echo objItem.ReceivedTime

Next

Jeżeli należycie do osób „czerwonych” to na pewno wiecie już jak działa nasz skrypt. Zaczynamy od zdefiniowania stałej olFolderInbox i ustawiamy jej wartość na 6; olFolderInbox będzie instruowała skrypt z którym folderem chce pracować. Po zdefiniowaniu stałej tworzymy wystąpienie obiektu Outlook.Application, a następnie za pomocą poniższych wierszy kodu łączymy się z obszarem nazw MAPI (czyli jedynym obszarem nazw, z którym możemy się połączyć), a następnie z folderem Inbox:

Set objNamespace = objOutlook.GetNamespace("MAPI")

Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)

Po połączeniu się z obiektem Inbox pobieramy kolekcję wszystkich wiadomości email, jakie się tam znajdują, a robimy to poprzez stworzenie nawiązania do kolekcji Items naszego folderu:

Set colItems = objFolder.Items

Teraz ta najfajniejsza część:

colItems.Sort "ReceivedTime", True

W tej części sortujemy zwróconą kolekcję w porządku malejącym według daty otrzymania. Używamy do tego metody Sort, po której następują dwa parametry: 1) ReceivedTime, nazwa właściwości według której chcemy sortować oraz 2) True, które instruuje skrypt, aby przesortował kolekcję w porządku malejącym. Czy da się przesortować naszą kolekcję w porządku rosnącym? Oczywiście, że się da, wystarczy tylko zrezygnować z drugiego parametru:

colItems.Sort "ReceivedTime"

Jeżeli chcielibyście przesortować kolekcję w porządku malejącym pod kątem tematu, to tak też się da. Nie ma dla nas nic niemożliwego. Wystarczy przesortować według właściwości Subject i zatrzymać nasz opcjonalny drugi parametr:

colItems.Sort "Subject", True

Itp, itd.

Uwaga: Według jakich innych wartości można sortować? Na pewno zadajecie sobie takie pytanie, jeżeli Waszym dominującym kolorem jest żółty. Odpowiadamy więc – jest kilka wyjątków (a few exceptions), ale ogólnie rzecz biorąc można sortować kolekcję według jakiegokolwiek parametru MailItem object.

Teraz musimy już tylko sprawdzić czy nasz skrypt działa, w tym celu ustawiamy pętlę For Each, która przechodzi przez każdy element Inbox:

For Each objItem in colItems

Co możemy zrobić w pętli? No w sumie wszystko. Dziś na przykład możemy przywołać echo wartości ReceivedTime każdego obiektu:

Wscript.Echo objItem.ReceivedTime

Powinniśmy otrzymać następujący wynik:

4/1/2008 8:11:23 AM

4/1/2008 8:00:12 AM

4/1/2008 7:59:16 AM

4/1/2008 7:44:47 AM

4/1/2008 7:43:26 AM

4/1/2008 7:33:39 AM

3/31/2008 4:17:42 PM

3/31/2008 12:55:12 PM

Super, nie? Oczywiście jeżeli zmienicie zdanie (to nie tyczy się raczej „czerwonych”) to możecie przesortować kolekcję w porządku rosnącym, wystarczy tylko pominąć drugi parametr.

Oczywiście żałujemy, że nie mogliśmy uczestniczyć w sesji Insights, chociaż tak w sumie to by się nam nie przydała na wiele. Miała na celu budowanie więzi koleżeńskiej, komunikację interpersonalną oraz wzbudzenie większego szacunku dla współpracowników i ich opinii. W sumie wszystko to w czym i tak jesteśmy najlepsi (chociaż nie powiem, taki trening przydał by się Skrypciarskiej Pani Redaktor, która nota bene jest “niebieska”). Ha! To wiele tłumaczy.

Nie wiem oczywiście jakim kolorem jest wścibskość, ale to zapewne jej drugi dominujący kolor…

 Do początku strony Do początku strony

Centrum skryptów - Microsoft Office