Changement d'adresse(s) - mise a jour des emails corporate chez Orange France Telecom

Publié le 27 Septembre 2011

Comme l'a récemment souligné Sébastien Crozier dans un post "à charge", le plan d'adressage email corporate de Orange (France Telécom) change une deuxième fois en 5 ans:

@francetelecom.com / @orange-ftgroup.com / @orange.com

Indépendamment du débat sur le coût et les conséquences de ce changement pour l'opérateur, cette affaire va conduire de nombreux interlocuteurs d'Orange à (re)mettre à jour leurs carnets d'adresse.

Plusieurs centaines pour être précis dans mon cas, d'où le recours à AppleScript pour automatiser la mise à jour du domaine dans les adresses email. L'opération s'est effectuée sans encombre et je vais à nouveau pouvoir voir les photos de ceux qui m'écrivent dans mail.app !

Ci-joint le script permettant de faire la manipulation, n'hésitez pas à l'éditer si vous voulez conserver les "anciennes adresses", ni à vous en servir pour d'autres manipulations sur les emails de vos contacts. Inutile de rappeler qu'un backup de son Carnet d'Adresses est recommandé avant de lancer le script.

Il suffit de copier / coller le texte ci-dessous dans l'éditeur AppleScript et de le compiler :

<-- couper ci-dessous -->

-- Core program written in 2006-2007
-- Updated Sept 2011 for @orange-ftgroup.com > @orange.com migration
-- Works on a contact selection : test with one or two before running over all your address book database
-- Thanks to Ben Waldie for helping me debug this -- http://www.automatedworkflows.com/
-- © Philippe Dewost 2011 // http://blog.dewost.com

set changeCount to 0
set errorCount to 0

display dialog "Warning: This script is designed to modify data! Be sure to back up your Address Book database first!" & return & return & "Do you still want to continue?"

try
doReplace(changeCount, errorCount)
on error theError
set archivedChangeCount to changeCount
display dialog "Main Dialog : " & errorCount & " error(s) happened. Had updated " & archivedChangeCount & " contacts so far. Error was " & theError & " ..."
doReplace(archivedChangeCount, errorCount)
end try

on doReplace(changeCount, errorCount)
try
tell application "Address Book"
activate
repeat with aPerson in (get selection)
repeat with anEmail in (emails of aPerson)
set textOfEmail to (value of anEmail)
set email_id to id of anEmail
set email_label to label of anEmail
if textOfEmail contains "@orange-ftgroup.com" then

-- update email
set newTextOfEmail to my searchReplace(textOfEmail, "@orange-ftgroup.com", "@orange.com")
set value of anEmail to newTextOfEmail
set label of anEmail to "Work"

-- keep soon deprecated address with "other" label
-- Uncomment following lines to keep the "old" email with an "other" label
-- try
-- Corrected by Ben Waldie / AppleScript Guru
-- set old_email to make new email at end of emails of aPerson with properties {label:"Other", value:textOfEmail}
-- on error theError
-- display dialog "Error adding email: " & theError
-- exit repeat
-- end try

-- Uncomment following line if instead you want to delete the email
-- delete (emails of aPerson whose id is email_id)

set changeCount to (changeCount + 1)
end if
end repeat
end repeat
save -- applies changes to the addressbook database once done
end tell
display dialog "Finished ! " & errorCount & " error(s) happened. Have updated " & changeCount & " contacts."
on error theError
set errorCount to (errorCount + 1)
set archivedChangeCount to changeCount
-- display dialog "Loop Dialog : Error#" & errorCount & " happened. Had updated " & archivedChangeCount & " contacts so far. Error was " & theError & " ..."
doReplace(archivedChangeCount, errorCount)
end try
end doReplace

on searchReplace(origStr, searchStr, replaceStr)
set old_delim to AppleScript's text item delimiters
set AppleScript's text item delimiters to searchStr
set origStr to text items of origStr
set AppleScript's text item delimiters to replaceStr
set origStr to origStr as string
set AppleScript's text item delimiters to old_delim
return origStr

end searchReplace

<-- couper ci-dessus -->

Ukibi aurait eu du bon...