From: Howard, S. (US - Tulsa) <sth...@de...> - 2003-10-17 14:16:57
|
I used something like this in a project I started a couple of years ago. I'll post the script so you can see what it looks like, but it has been a long time since I have even looked at this script. I know it works, and it does get the folders on some levels, and you can see that. Some of the loop= s and prints are in there just because I was learning when I wrote this, and needed to see what was being returned. =20 This was the beginning of a little project to consolidate the data on when people were scheduled to be out of the office. It has some stuff I was doin= g to learn to navigate through the folders, and it navigates to a calendar object on our network, pulls relevant data, and puts it into Excel. I'd tak= e out everything but the stuff you were asking for if I had a little time to spend on it, but as it is, I think you can see what I am doing, and get the= information you need from it. =20 Let me know if you have further questions after you get a chance to look at= this, and I'll see what I can do to help. =20 Hope this helps, =20 Steve H. =20 =20 use Win32; use Win32::OLE; use Win32::OLE::Const 'Microsoft Outlook'; use Win32::OLE::NLS qw( :DATE :LOCALE ); use BitWise qw(RGB); # this is my module. You probably need to remove all references to RGB # or to BitWise= . *Error =3D *Win32::OLE::LastError; # Create a shortcut because I'm= a lazy typist. # open an outlook object: my $otl =3D Win32::OLE->new('Outlook.Application'); # create a session: my $sess =3D $otl->Session(); # print the total number of Folders to search: print "Folders on this level: " . $sess->Folders->Count(); my $totalFolders =3D $sess->Folders->Count(); foreach (1 .. $totalFolders) { # print each key and value for each folder on this level: print "$_ is " . $sess->Folders(1)->{$_}. "\n" foreach sort keys %{$sess->Folders(1)}; print "\n\n\n\n"; } # all work below this point is work I was actually doing to pull items from= a spreadsheet # and put them in an Excel spreadsheet. my $cal =3D $sess->Folders('Public Folders')->Folders('All Public Folders')->Folders('National Practices'); $cal =3D $cal->Folders('Americas')->Folders('US')->Folders('Clusters')->Folders('Mid= America')->Folders('Calendars'); $cal =3D $cal->Folders('US TULSA DTO IT DEPT'); #outkeys ($cal); print "\nItems:\n"; my $item =3D $cal->Items(304); #outkeys ($item); # now get an Excel object and input the info; my $xl =3D Win32::OLE->new('Excel.Application'); $xl->{Visible} =3D 1; my $book =3D $xl->WorkBooks->Add(); my $sheet =3D $book->Worksheets(1); my $row =3D 2; $sheet->Columns('A')->{ColumnWidth} =3D 30; $sheet->Columns('B:C')->{ColumnWidth} =3D 15; $sheet->Columns('D')->{ColumnWidth} =3D 80; $sheet->Range("A1:D1")->{Interior}->{Color} =3D RGB(0,0,0); $sheet->Range("A1:D1")->{Font}->{Color} =3D RGB(255, 255, 255); $sheet->Range("A1:D1")->{Font}->{Size} =3D 14; $sheet->Range("A1:D1")->{Font}->{Bold} =3D 1; $sheet->Range("A1")->{Value} =3D "SUBJECT"; $sheet->Range("B1")->{Value} =3D "BEGIN"; $sheet->Range("C1")->{Value} =3D "END"; $sheet->Range("D1")->{Value} =3D "BODY"; # lets see what is in the Start key - I am looking for a date and time. foreach (1 .. $cal->{UnReadItemCount}) { my $item =3D $cal->Items($_); #print $item->Subject() . "\t" if $item; $sheet->Range("A$row")->{Value} =3D $item->Subject(); my $start =3D $item->{Start}; #print $start->Date(DATE_LONGDATE) . " " . $start->Time() . "\t" if $start; $sheet->Range("B$row")->{Value} =3D $start;#=3D $start->Date(DATE_LONGDATE) . " " . $start->Time() if $start; my $end =3D $item->{End}; #print $end->Date(DATE_LONGDATE) . " " . $end->Time() . "\n" if $end;= $sheet->Range("D$row")->{Value} =3D $item->Body(); $sheet->Range(sprintf"C%d", $row++)->{Value} =3D $end;#->Date(DATE_LONGDATE) . " " . $end->Time() if $end; } #my $subject =3D $item->Subject(); #print $subject . "\n"; #my $iteration =3D 1; #while ($cal->Items($iteration)) #{ # print $cal->Items($iteration)->Subject() . "\n"; # $iteration++; #} sub outkeys { my $hashref =3D $_[0]; print "$_ =3D $hashref->{$_}\n" foreach sort keys %{$hashref}; } =20 =20 -----Original Message----- From: ang...@rb... [mailto:ang...@rb...]=20 Sent: Friday, October 17, 2003 7:37 AM To: per...@li... Subject: [perl-win32-gui-users] Outlook - list all folders =20 =20 Does anyone have any examples of how to list all the folder names for a particular Outlook profile?=20 I'm looking at using Win32::OLE but can't figure out how to list ALL folder= names.=20 Any help would be appreciated.=20 Thanks!=20 ------------------------------------------------------------ This e-mail may be privileged and/or confidential, and the sender does not waive any related rights and obligations. Any distribution, use or copying of this e-mail or the information it contains by other than an intended recipient is unauthorized. If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately.=20 Ce courrier =E9lectronique est confidentiel et prot=E9g=E9. L'exp=E9diteur = ne renonce pas aux droits et obligations qui s'y rapportent. Toute diffusion, utilisation ou copie de ce message ou des renseignements qu'il contient par= une personne autre que le (les) destinataire(s) d=E9sign=E9(s) est interdit= e. Si vous recevez ce courrier =E9lectronique par erreur, veuillez m'en aviser imm=E9diatement, par retour de courrier =E9lectronique ou par un autre moye= n. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D - This message (including any attachments) contains confidential informatio= n intended for a specific individual and purpose, and is protected by law. -= If you are not the intended recipient, you should delete this message and are hereby notified that any disclosure, copying, or distribution of this message, or the taking of any action based on it, is strictly prohibited. |