First, have you selected your desired format in Entourage's
preferences, under Address Book? That way any new numbers you enter
with just the digits will automatically get your desired format.
Second, to revise the format of existing numbers you need a modified
script. The following will reformat all the phone numbers of all
selected contacts. I advise doing a small number at a time until you
get a feel for how long the script will run. Test it out on 1 or 2 to
see if the result is what you want. Copy and paste into Script Editor,
save with a name of your choice in Entourage Script Menu Items folder:
-- DaveCort 4/12/04: added repeat loop to process every phone number
associated with the selected contact
-- DaveCort 4/12/04: added empty string check in reformat to improve perf
property phoneTypes : {"Home phone number", "Business phone number",
"Mobile phone number", "Home fax phone number", ¬
"Business fax phone number", "Pager phone number", "Assistant phone
number", "Other home phone number", "Other business phone number", ¬
"Custom phone number one", "Custom phone number two", "Custom phone
number three", "Custom phone number four"}
tell application "Microsoft Entourage"
activate
try
set theList to the selection
on error theErr number errNum
if errNum = -1728 then
-- Try formatting the text on the clipboard
set t to the clipboard
set t to my reformat(t)
set the clipboard to t
try
set the selection to t
on error
display dialog "Clipboard now contains: " & t
end try
return
else
display dialog "Error number:" & errNum & " " & theErr
return
end if
end try
repeat with theC in theList
if class of theC is not contact then
if class of theC is string then
-- Try formatting the text on the clipboard
set t to the clipboard
set t to my reformat(t)
set the clipboard to t
try
set the selection to t
on error
display dialog "Clipboard now contains: "
& t
end try
return
end if
display dialog "No contacts are selected."
return
end if
set theID to (the ID of theC as string)
repeat with i in phoneTypes
set pn to run script "tell application \"Microsoft
Entourage\" to
return " & i & " of contact ID " & theID
set newpn to (my reformat(pn)) as string
if newpn ≠ pn then run script "tell application
\"Microsoft
Entourage\" to set " & i & " of contact ID " & theID & " to \"" &
newpn & "\""
end repeat
end repeat
end tell
on reformat(pNum)
if pNum = "" then return ""
set pNum to my onlyDigits(pNum)
set pNum to my formatNum(pNum)
return pNum
end reformat
on onlyDigits(s)
-- Strip all but digits from a string
set theDigits to "1234567890"
set newS to ""
repeat with i from 1 to length of s
set c to character i of s
if c is in theDigits then set newS to newS & c
end repeat
return newS
end onlyDigits
on formatNum(n)
-- Insert USA telephone formatting
--Choose one of two formats, comment out one unused
set mask to "+1-AAA-PPP-NNNN"
-- set mask to "AAA-PPP-NNNN"
if length of n is 10 then
set aaa to text 1 thru 3 of n
set ppp to text 4 thru 6 of n
set nnnn to text 7 thru 10 of n
set mask to my searchReplace(mask, "AAA", aaa)
set mask to my searchReplace(mask, "PPP", ppp)
set mask to my searchReplace(mask, "NNNN", nnnn)
set n to mask
else if length of n is 7 then
set n to text 1 thru 3 of n & "-" & text 4 thru 7 of n
end if
return n
end formatNum
-- routine to do a search and replace on text
on searchReplace(mainString, searchString, replaceString) --
Parameters: search, replace, the String
set olddelis to AppleScript's text item delimiters
set AppleScript's text item delimiters to (searchString)
set theList to (every text item of mainString)
set AppleScript's text item delimiters to (replaceString)
set theString to theList as string
set AppleScript's text item delimiters to olddelis
return theString
end searchReplace
On 1/30/07, ATB <[EMAIL PROTECTED]> wrote:
Does anyone know of a script that will examine all my contacts, and modify
all phone numbers, be they work, mobile, fax, pager to a specific format,
where there is a "+" at the beginning of the number, followed by the area
code, and then the 7-digit phone number, i.e. +1-AAA-BBB-CCCC? Of course,
not touching those with the right format.
Up until now, what I have seen are scripts that change only the home phone
number to the format that I want or that change only to the home phone
number to the following format 514-555-0000.
For example, here's what I would want
514-555-0000 -> +1-514-555-0000
5145550000 -> +1-514-555-0000
1-514-555-0000 -> +1-514-555-0000
15145550000 -> +1-514-555-0000
(514) 555-0000 -> +1-514-555-0000
(514)5550000 -> +1-514-555-0000
1 (514) 555-0000 -> +1-514-555-0000
1(514)5550000 -> +1-514-555-0000
+1-514-555-0000 -> +1-514-555-0000
Thank you.
Antoine, 2007-01-30, 23h51 EST
--
To unsubscribe:
<mailto:[EMAIL PROTECTED]>
archives:
<http://www.mail-archive.com/entourage-talk%40lists.letterrip.com/>
old-archive:
<http://www.mail-archive.com/entourage-talk%40lists.boingo.com/>
--
To unsubscribe:
<mailto:[EMAIL PROTECTED]>
archives:
<http://www.mail-archive.com/entourage-talk%40lists.letterrip.com/>
old-archive:
<http://www.mail-archive.com/entourage-talk%40lists.boingo.com/>