Title: Re: Way to check for duplicate emails addresses in a message?
Paul,
I'm getting a “No result was returned from some part of this expression” error message when I run the Remove Duplicate Recipients script.
I tested it by taking a couple of my Custom View Categories, with many known dupes, pasting them into a new message, and then running the script.
Do I have the script copied correctly?
global ods
tell application "Microsoft Entourage"
set theDraft to window 1
if class of theDraft � draft window then
beep
display dialog "You must have your new message window [not the Address Book, a Custom View, or anything else] in the front when you run the script." buttons {"OK"} default button "OK" with icon 0
return
end if
set {theTo, theCC, theBCC} to theDraft's {to recipients, CC recipients, BCC recipients}
set {ods, AppleScript's text item delimiters} to {AppleScript's text item delimiters, {", "}}
set {toList, ccList, bccList} to {text items of theTo, text items of theCC, text items of theBCC}
set AppleScript's text item delimiters to ods
set toList to my ResetRecipients(toList, {}, {})
set ccList to my ResetRecipients(ccList, toList, {})
set bccList to my ResetRecipients(bccList, ccList, toList)
set AppleScript's text item delimiters to {", "}
set {window 1's to recipients, window 1's CC recipients, window 1's BCC recipients} to {"" & toList, "" & ccList, "" & bccList}
set AppleScript's text item delimiters to ods
end tell
on ResetRecipients(theList, previousList, anteriorList)
tell application "Microsoft Entourage"
set newList to {}
if theList � {""} then
repeat with i from 1 to (count theList)
set aRecip to item i of theList
if aRecip does not contain "@" then -- must be group
set newList to my ProcessGroup(aRecip, theList, previousList, anteriorList, newList)
else -- it's a contact
if ({aRecip} is not in newList) and ({aRecip} is not in previousList) and ({aRecip} is not in anteriorList) then set end of newList to aRecip -- use @ format
end if
end repeat
else
set newList to {""}
end if
end tell
return newList
end ResetRecipients
to ProcessGroup(aRecip, theList, previousList, anteriorList, newList)
tell application "Microsoft Entourage"
try
set theGroup to group aRecip
on error -- if actually an artificial group member without email address
return
end try
set theEntries to content of every group entry of theGroup
repeat with j from 1 to (count theEntries)
set anEntry to item j of theEntries
repeat 1 times -- for doing next repeat after nested groups
try
set {dName, eAddress} to {display name, address} of anEntry
if eAddress = "" then
set newList to my ProcessGroup(dName, theList, previousList, anteriorList, newList) -- recursive
exit repeat -- the 1 times repeat, go on to next group entry
end if
if dName � "" then
if dName starts with "\"" then set dName to text 2 thru -2 of dName -- equivalent to display name without quotes
set nameAddress to dName & " <" & eAddress & ">"
if ({nameAddress} is not in newList) and ({nameAddress} is not in previousList) and ({nameAddress} is not in anteriorList) then set end of newList to nameAddress -- use @ format
else -- no display name, address only
if ({eAddress} is not in newList) and ({eAddress} is not in previousList) and ({eAddress} is not in anteriorList) then set end of newList to eAddress -- will have @ format
end if
on error
exit repeat -- the 1 times repeat, move on to next group entry
end try
end repeat -- the 1 times repeat
end repeat
end tell
return newList
end ProcessGroup
--
Scott
<[EMAIL PROTECTED]>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> From: "Entourage:mac Talk" <[EMAIL PROTECTED]>
> Date: Sun, 28 Jan 2001 12:28:22 -0800
Paul wrote:
>
>> OK. Here it is. You can drag contacts and/or groups (any combination) from
>> custom view(s) and/or the Address Book to any or all of the recipient fields
>> (To, Cc, Bcc) of a new message window. Then run the script to remove
>> duplicates. It will show all contacts as contact icons, except for contacts
>> without display names (i.e. only email addresses): they will be included but
>> will display the email address with an @ icon. If you have dragged a group,
>> it will show all non-duplicate individual group members now, not the group
>> name. If the group members are contacts, it will show them as contact icons
>> (except nameless ones, as above). If you have any group members who are not
>> real contacts in the Address Book, they will be included, if not duplicates,
>> with the @ icon. Please let me know if you hit any problem.
- Re: Way to check for duplicate emai... Paul Berkowitz
- Re: Way to check for duplicate... Allen Watson
- Re: Way to check for dupli... Paul Berkowitz
- Re: Way to check for duplicate emai... Paul Berkowitz
- Re: Way to check for duplicate... Allen Watson
- Re: Way to check for dupli... Paul Berkowitz
- Re: Way to check for dupli... Allen Watson
- Re: Way to check for dupli... Christian M. M. Brady
- Re: Way to check for dupli... Paul Berkowitz
- Re: Way to check for duplicate emails addresses in a... R. Scott Ohlgren
- Re: Way to check for duplicate emails addresses in a... R. Scott Ohlgren
- Re: Way to check for duplicate emails addresses in a... R. Scott Ohlgren
- Re: Way to check for duplicate emails addresses... Paul Berkowitz
- Re: Way to check for duplicate emails addresses... Paul Berkowitz
- Re: Way to check for duplicate emails addre... Allen Watson
- Re: Way to check for duplicate emails a... Paul Berkowitz
