Newsgroup: it.comp.macintosh
Titolo: Entourage 2004 e gestione gruppi

Salve a tutti. Forse è una banalità ma la faccenda mi sta facendo perdere
tempo: supponiamo di avere un gruppo di persone indipendenti fra loro
(chiamato "barzellette") con cui scambiare allegati divertenti e barzellette
varie; ricevo una mail carina da un componente del gruppo e decido di
inoltrare il messaggio a tutti gli altri amici TRANNE lui ovviamente.
Era già scomodo con Outlook Express inoltrare il messaggio al gruppo,
cercare la riga contenente l'indirizzo del mittente e cancellarlo, ma con
Entourage non c'è neanche questa possibilità (sulla riga Destinatari si
legge il nome del gruppo "inesploso") a meno di non ridefinire quel gruppo
escludendo il mittente in questione, salvare il gruppo, spedire la
fantomatica email e poi rimodificare il gruppo riaggiungendo il mittente
omesso. DAVVERO POCO PRATICO!!!!
Possibile che non esista ancora un pulsantino tipo "inoltra a tutti meno
che"????
Come si puo' ovviare a questo problema in maniera rapida e indolore?
Esiste qualche Script che faccia questo?
Cia'
Alessio

 legge il nome del gruppo "inesploso"
Control-click sull'icona del gruppo|Expand Group
-- 
"I have a very simple life, I have my family and I have Apple and Pixar.
And I don't do much else." S. J.

 Esiste qualche Script che faccia questo?
Prima di tutto alcune precisazioni:
1 - Devi sostituire tuo_indirizzo con un tuo indirizzo di posta
elettronica. Questo indirizzo verrà messo come destinatario principale
del messaggio inoltrato. Oppure se vuoi prova a metterci "undisclosed
recipient".
2 - I membri del gruppo vengono messi in Bcc.
3 - Lo script fa in modo che il messaggio aperto venga inoltrato al
gruppo "Barzellette". Volendo si potrebbe aggiungere una finestra di
dialogo che ti chiede il nome del gruppo cui vuoi inoltrare il
messaggio.
4 - Se salvi lo script dentro "~/Documents/Microsoft User Data/Entourage
Script Menu Items" e lo chiami "Inoltra\comI", ti basterà premere
"ctrl+alt+mela+i".
tell application "Microsoft Entourage"
set Messaggio to the displayed message of window 1
set MittenteOriginale to the address of the sender of Messaggio
set DestinatariInoltro to "" as text
set MembriGruppo to every group entry of group "Barzellette"
repeat with Contatto in MembriGruppo
set Indirizzo to (address of content of Contatto)
if Indirizzo is not equal to MittenteOriginale then
if DestinatariInoltro is "" then
set DestinatariInoltro to DestinatariInoltro & Indirizzo
else
set DestinatariInoltro to DestinatariInoltro & ", " & Indirizzo
end if
end if
end repeat
forward Messaggio to "tuo_indirizzo"
set BCC recipients of window 1 to DestinatariInoltro
end tell
-- 
Ve lo meritate Gil Amelio!

 messaggio.
tell application "Microsoft Entourage"
try
set Messaggio to the displayed message of window 1
on error
display dialog "Devi avere un messaggio in primo piano."
return
end try
display dialog "Inserisci il nome del gruppo." ¬
default answer "" buttons {"OK"} default button "OK"
set ilGruppo to the text returned of result
set ElencoGruppi to the name of every group as text
if ilGruppo is not in ElencoGruppi then
display dialog "Il gruppo inserito non esiste." ¬
buttons {"OK"} default button "OK"
else
try
set MittenteOriginale to the address of the sender of Messaggio
set DestinatariInoltro to "" as text
set MembriGruppo to every group entry of group ilGruppo
repeat with Contatto in MembriGruppo
set Indirizzo to (address of content of Contatto)
if Indirizzo is not equal to MittenteOriginale then
if DestinatariInoltro is "" then
set DestinatariInoltro to DestinatariInoltro & Indirizzo
else
set DestinatariInoltro to DestinatariInoltro & ", " & Indirizzo
end if
end if
end repeat
forward Messaggio to "tuo_indirizzo"
set BCC recipients of window 1 to DestinatariInoltro
end try
end if
end tell


Ma sei un GRANDE!!!!
Mo'cceprovosubbito :-))))))))))))
Grazie mille!
Alessio

 Mo'cceprovosubbito :-))))))))))))
Cosě č ancora meglio, perché tiene conto che un contatto potrebbe avere
piů di un indirizzo di mail, quindi fa la verifica di tutti gli
indirizzi del mittente originale, non solo di quello usato per quel
particolare messaggio.
tell application "Microsoft Entourage"
try
set Messaggio to the displayed message of window 1
on error
display dialog "Devi avere un messaggio in primo piano."
return
end try
display dialog "Inserisci il nome del gruppo." Ź
default answer "" buttons {"OK"} default button "OK"
set ilGruppo to the text returned of result
set ElencoGruppi to the name of every group as text
if ilGruppo is not in ElencoGruppi then
display dialog "Il gruppo inserito non esiste." Ź
buttons {"OK"} default button "OK"
else
try
set MittenteOriginale to the address of the sender of Messaggio
set DestinatariInoltro to "" as text
set MembriGruppo to every group entry of group ilGruppo
set ListaContatti to (find MittenteOriginale)
if ListaContatti is not {} then
set ListaIndirizzi to {}
repeat with Contatto in ListaContatti
set listina to every email address of Contatto
repeat with i in listina
if ListaIndirizzi does not contain (i as string) then
copy (i as string) to the end of ListaIndirizzi
end if
end repeat
end repeat
else
set ListaIndirizzi to {MittenteOriginale}
end if
repeat with Contatto in MembriGruppo
set Indirizzo to (address of content of Contatto)
if ListaIndirizzi does not contain Indirizzo then
if DestinatariInoltro is "" then
set DestinatariInoltro to DestinatariInoltro & Indirizzo
else
set DestinatariInoltro to DestinatariInoltro & ", " & Indirizzo
end if
end if
end repeat
forward Messaggio to "Undisclosed Recipient"


 Così è ancora meglio
Ulteriore modifica: non devi scrivere il nome del gruppo, ma lo scegli
da un elenco. Puoi scegliere anche più di un gruppo.
tell application "Microsoft Entourage"
try
set Messaggio to the displayed message of window 1
on error
display dialog "Devi avere un messaggio in primo piano."
return
end try
set ElencoGruppi to the name of every group
set GruppiScelti to (choose from list ElencoGruppi with prompt ¬
"Scegli i gruppi cui inoltrare il messaggio. Usa il tasto \"Command\"" ¬
& " per le selezioni multiple." with multiple selections allowed)
try
set MittenteOriginale to the address of the sender of Messaggio
set DestinatariInoltro to "" as text
set ListaContatti to (find MittenteOriginale)
if ListaContatti is not {} then
set ListaIndirizzi to {}
repeat with Contatto in ListaContatti
set listina to every email address of Contatto
repeat with i in listina
if ListaIndirizzi does not contain (i as string) then
copy (i as string) to the end of ListaIndirizzi
end if
end repeat
end repeat
else
set ListaIndirizzi to {MittenteOriginale}
end if
repeat with ilGruppo in GruppiScelti
set MembriGruppo to every group entry of group (ilGruppo as text)
repeat with Contatto in MembriGruppo
set Indirizzo to (address of content of Contatto)
if ListaIndirizzi does not contain Indirizzo then
if DestinatariInoltro is "" then
set DestinatariInoltro to DestinatariInoltro & Indirizzo
else
set DestinatariInoltro to DestinatariInoltro & ", " & Indirizzo
end if
end if
end repeat
end repeat
forward Messaggio to "Undisclosed Recipient"
set BCC recipients of window 1 to DestinatariInoltro
end try


 Ulteriore modifica
Versione (credo) definitiva: verifica anche gli indirizzi dei
destinatari del messaggio originale (cercando eventuali altri indirizzi,
nella tua rubrica, appartenenti alle stesse persone), in modo che non
mandi il messaggio a chi lo ha già ricevuto.
tell application "Microsoft Entourage"
try
set Messaggio to the displayed message of window 1
on error
display dialog "Devi avere un messaggio in primo piano."
return
end try
set ElencoGruppi to the name of every group
set GruppiScelti to (choose from list ElencoGruppi with prompt ¬
"Scegli i gruppi cui inoltrare il messaggio. Usa il tasto \"Command\"" ¬
& " per le selezioni multiple." with multiple selections allowed)
try
set MittenteOriginale to the address of the sender of Messaggio
set DestinatariInoltro to "" as text
set ListaIndirizzi to ¬
(the address of address of every recipient of Messaggio) & ¬
{MittenteOriginale}
set ListaContatti to {}
repeat with x in ListaIndirizzi
set ListaContatti to ListaContatti & (find x)
end repeat
if ListaContatti is not {} then
repeat with Contatto in ListaContatti
set listina to every email address of Contatto
repeat with i in listina
if ListaIndirizzi does not contain (i as string) then
copy (i as string) to the end of ListaIndirizzi
end if
end repeat
end repeat
end if
repeat with ilGruppo in GruppiScelti
set MembriGruppo to every group entry of group (ilGruppo as text)
repeat with Contatto in MembriGruppo
set Indirizzo to (address of content of Contatto)
if (ListaIndirizzi does not contain Indirizzo) and ¬
(DestinatariInoltro does not contain Indirizzo) then
if DestinatariInoltro is "" then
set DestinatariInoltro to DestinatariInoltro & Indirizzo
else
set DestinatariInoltro to DestinatariInoltro & ", " & Indirizzo
end if
end if
end repeat
end repeat
forward Messaggio to "Undisclosed Recipient"
set BCC recipients of window 1 to DestinatariInoltro
end try
end tell
-- 
Ci sono solo 10 tipi di persone al mondo: chi capisce il binario e chi
no.

 Versione (credo) definitiva
No. Questa dovrebbe essere veramente l'ultima miglioria: ti permette di
avere lo stesso contatto in più gruppi, anche con indirizzi diversi. Se
fai un forward verso questi gruppi, solo uno degli indirizzi viene
inserito tra i Bcc.
tell application "Microsoft Entourage"
try
set theMessage to the displayed message of window 1
on error
display dialog "You must have a message displayed to run this script."
return
end try
set GroupList to the name of every group
set SelectedGroups to (choose from list GroupList with prompt ¬
"Scegli i gruppi cui inoltrare il messaggio. Usa il tasto \"Command\"" ¬
& " per le selezioni multiple." with multiple selections allowed)
try
set OriginalSender to the address of the sender of theMessage
set ForwardRecipients to "" as text
set ExcludeList to ¬
(the address of address of every recipient of theMessage) ¬
& {OriginalSender}
set ExcludeContacts to {}
repeat with ExcludeAddress in ExcludeList
set ExcludeContacts to ExcludeContacts & (find ExcludeAddress)
end repeat
if ExcludeContacts is not {} then
repeat with theContact in ExcludeContacts
set ContactAddressList to every email address of theContact
repeat with ContactAddress in ContactAddressList
if ExcludeList does not contain (ContactAddress as string) then
copy (ContactAddress as string) to the end of ExcludeList
end if
end repeat
end repeat
end if
repeat with theGroup in SelectedGroups
set GroupMembers to every group entry of group (theGroup as text)
repeat with theMember in GroupMembers
set theAddress to (address of content of theMember)
set MemberContactList to (find theAddress)
set MemberAddressList to {}
repeat with MemberContact in MemberContactList
set MemberAddressList to MemberAddressList & ¬
(every email address of MemberContact)
end repeat
set ForwardAddress to (the first item of MemberAddressList as text)
if (ExcludeList does not contain ForwardAddress) and ¬
(ForwardRecipients does not contain ForwardAddress) then
if ForwardRecipients is "" then
set ForwardRecipients to ForwardRecipients & ForwardAddress
else
set ForwardRecipients to ForwardRecipients & ", " & ForwardAddress
end if
end if
end repeat
end repeat
forward theMessage to "Undisclosed_Recipient"
set BCC recipients of window 1 to ForwardRecipients
end try
end tell
-- 
