Cela me semble correspondre à mes besoins, c'est donc avec grand intérêt que je testerais ton script. :zen:
Voici le script.
Attention : il fonctionne chez moi, mais peut causer des pertes de données, etc, etc... Donc à tester après sauvegardes, ou sur une autre session.
Je suis preneur de toute suggestion,
Cordialement
Nicolas
*************************
(* Ce script récupère les dates d'anniversaires de l'application Carnet d'addresses pour en faire des événements dans iCal.
Le champ de Carnet d'addresses est "custom date".
Les événements sont récurrents dans iCal, avec une fréquence annuelle.
Une alarme de 24 heures est créée pour chaque événement.
(c) Nicolas Silvestre 2010
Améliorations possibles :
- ne rechercher que les personnes qui ne font pas partie du groupe "Import bureau" pour gagner du temps
Modifications apportées :
v01 -> v02
- quitte après exécution
v03 -> v04
- laisse address book et ical dans leur état d'origine (ouvert ou quitté)
*)
on run
set CalendarName to "Anniversaire (script)" -- Nom du calendrier utilisé dans iCal
set ListeDesAnniversaires to {} as list -- initialisation de la liste (liste de listes)
set DureeAlarmeEnMinutes to -1440 -- Durée de 24 heures en minutes, pour création de l'alarme dans iCal
set CurrentYear to year of (current date) -- Année en cours
set RecurrenceValue to "FREQ=YEARLY;INTERVAL=1" -- Valeur à utiliser dans iCal pour définir la récurrence annuelle
set LibelleParDefautAnglais to "anniversary" -- Valeur par défaut dans iCal pour le "label" du champ "custom date"
set LibelleParDefautFrancais to "Anniversaire" -- Francisation de la valeur par défaut
set ModeDebug to false
tell application "Finder"
if exists process "iCal" then
set iCalExiste to true
else
set iCalExiste to false
end if
if exists process "Address Book" then
set AddressBookExiste to true
else
set AddressBookExiste to false
end if
end tell
if ModeDebug then
display dialog "Carnet d'adresses déjà ouvert : " & AddressBookExiste & return & "iCal déjà ouvert :" & iCalExiste
end if
tell application "Address Book"
set foundset to people
if ModeDebug then
tell application "Finder"
display dialog "Le nombre de contacts est : " & (count of foundset)
end tell
end if
repeat with theperson in foundset
-- Recherche sur l'ensemble des personnes du carnet d'adresses
set foundCustomDates to the custom dates of theperson
-- recherche des champs "custom dates"
repeat with thecustomDate in foundCustomDates
set LEtiquette to the label of thecustomDate as string
-- Remplacement de l'étiquette par défaut en anglais par une version française
if LEtiquette is equal to LibelleParDefautAnglais then
set LEtiquette to LibelleParDefautFrancais
end if
set Libelle to LEtiquette & " de/chez " & the name of theperson as string
set dateanniv to the value of thecustomDate as date
-- ajout du nouveau couple libellé / date à la liste
set end of ListeDesAnniversaires to {Libelle, dateanniv}
end repeat
end repeat
end tell
tell application "iCal"
activate
try
tell calendar CalendarName
delete every event
end tell
if ModeDebug then
tell application "Finder"
display dialog "Les événements du calendrier " & CalendarName & " ont été supprimés" giving up after 2
end tell
end if
on error
make new calendar with properties {name:CalendarName}
if ModeDebug then
tell application "Finder"
display dialog "Le calendrier " & CalendarName & " a été créé" giving up after 2
end tell
end if
end try
repeat with UnAnniversaire in ListeDesAnniversaires
set TheSummary to item 1 of UnAnniversaire
set DateAnniversaire to item 2 of UnAnniversaire
tell application "Finder"
--display dialog TheSummary & " / " & DateAnniversaire as string
end tell
set LaDateiCal to current date
set the month of LaDateiCal to (month of DateAnniversaire)
set the day of LaDateiCal to (day of DateAnniversaire)
set LAge to (CurrentYear - (year of DateAnniversaire)) & " ans en " & CurrentYear as string
tell calendar CalendarName
set ANewEvent to make new event at end of events with properties {summary:TheSummary, start date:LaDateiCal, end date:LaDateiCal, allday event:true, recurrence:RecurrenceValue, description:LAge}
tell ANewEvent
make new display alarm at end of display alarms with properties {trigger interval

ureeAlarmeEnMinutes}
end tell
end tell
end repeat
end tell
tell application "Finder"
activate
display dialog "Les anniversaires trouvés dans le carnet d'adresses ont été saisis dans iCal, dans le calendrier " & CalendarName buttons {"OK"} default button 1 giving up after 5
end tell
if AddressBookExiste is false then
--tell application "Address Book"
quit application "Address Book"
-- end tell
end if
if iCalExiste is false then
--tell application "iCal"
quit application "iCal"
-- end tell
end if
quit
end run