1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| -- récupère les adresses emails dans les emails sélectionnés
set Choix to display dialog "Voulez vous extraire les adresses email contenues dans le corps des emails" buttons {"Extraire", "Ne pas extraire"}
set EmailCorps to (button returned of Choix is "Extraire")
set ListeAdresses to {}
tell application "Microsoft Outlook"
set maListe to selected objects--des emails sont selectionnés
if (count of maListe) = 0 then -- pas d'emails sélectionnés donc on prend tous les emails du dossier sélectioné
set monDossier to selected folder
set maListe to every message of monDossier
end if
repeat with I from 1 to count of maListe
if EmailCorps then
tell me to set mesAdr to GetEmail(content of itemI of maListe) -- récupère les emails dans le corps
else
set mesAdr to {}
end if
set monAdresse to (sender of item I of maListe) -- récupère l'email de l'expéditeur
set end of mesAdr to (address of monAdresse)
set DestListe to every recipient of item I of maListe-- lit la liste de tous les recipients (incl. to, cc et bcc)
repeat with J from 1 to count of DestListe
set monAdresse to email address of item J of DestListe
set end of mesAdr to (address of monAdresse) -- ajoute l'adresse en fin de liste
end repeat
set ListeAdresses to ListeAdresses & mesAdr-- ajoute la liste des adresses de cet email dans la liste generale
end repeat
end tell
-- converti la liste en texte avec une adresse par ligne
set AppleScript'stext item delimiters to {return}
set the clipboard to ListeAdresses as text-- mets le text dans le presse papier
tell application "Microsoft Excel" -- cree un nouveau document Excel et colle le texte.
make new document
activate
tell active sheet to paste
end tell
on GetEmail(Tsource)
(*
extrait la liste des adresses emails contenues dans le texte
une adresse email est de la forme aaaaa@bbbbb.ccc selon la RFC5322
aaaaa peut contenir n'importe quel caractère sauf une liste définie (le & est admis ! ). j'ai ajouté qu'il doit contenir plus de 4 caractères
bbbbb ne doit contenir que des lettres (partie 1 du domaine)
ccc ne doit contenir que des lettres sur 2 ou 3 caractères (partie 2 du domaine uniquement pour les emails)
*)
set myList to {}
set AppleScript'stext item delimiters to "@"
set Parts to text items of Tsource
set AppleScript's text item delimiters to {space, linefeed, return, tab, quote, character id 160, "<", ">", "?", "!", ":", ";", "(", ")", "@", "ç", "[", "]", "%"}
repeat with I from 2 to count of Parts
set P1 to (text item -1 of item (I - 1) of Parts) -- partie aaaaa
set P2 to (text item 1 of item I of Parts)
set P1_OK to (length of P1 > 3) -- partie aaaa compte plus de 4 caractères
set PosPt to offset of "." in P2
set P2_OK to (PosPt > 0) and ((((length of P2) - PosPt) > 2) and (((length of P2) - PosPt) < 6)) -- domaine contient un point et 2 a 5 car après
if P1_OK and P2_OK then set end of myList to P1 & "@" & P2
end repeat
return myList
end GetEmail |
Partager