anniversaires famille des contacts

two

Membre actif
6 Novembre 2005
895
290
Namur
Bonjour,

j'ai une question a propos de l'utilisation combinée d'ical et du carnet d'adresse.
J'ai dans mes contacts un certain nombre de personne pour lesquels j'aimerai me "souvenir" des anniversaires des conjoints/enfants/parents.
J'aimerais trouver un moyen d'ajouter ces anniversaires dans les fiches de mes contacts et les faire prendre en compte par le calendrier anniversaires d'iCal.
Je pourrais bien sur créer des fiches pour chacun d'entre eux mais je n'en vois pas l'intérêt car je n'aurai pas de numéro de téléphone pour ces personnes et cela alourdira le nombre d'entrées dans mon carnet d'adresse.

Une idée pour gérer cela de la manière la plus "light" possible?
 

les_innommables66

Membre expert
Club MacG
26 Février 2006
1 148
120
Bonjour,

J'utilise le champ "rendez-vous" que je duplique et renomme autant de fois qu'il y a de personnes dans la fiche. Ceci permet d'avoir le nom de chaque personne et sa date de naissance.
Ensuite, j'ai fait un script qui va récupérer ces infos pour les mettre sous ical.
Grâce à Automator, le script s'exécute tout seul à la bonne fréquence (une fois par mois par exemple),

Si ça t'intéresse, fais le moi savoir,

Cordialement
Nicolas
 

Sly54

Acrobate de l'espace
Modérateur
Club MacG
31 Janvier 2005
51 764
9 801
Nancy___
Je pourrais bien sur créer des fiches pour chacun d'entre eux mais je n'en vois pas l'intérêt car je n'aurai pas de numéro de téléphone pour ces personnes et cela alourdira le nombre d'entrées dans mon carnet d'adresse.

et prendre le problème à l'envers : tu te crées un calendrier "anniversaires" dans iCal et dans ce calendrier tu entres les anniv de chaque personne (jour entier / répéter : tous les ans / fin : jamais / alarme : comme tu veux).

Tu n'alourdis pas ton carnet d'adresses car tu ne l'utilises pas; et tu décoches ton calendrier "anniv" quand ça t'arrange.
 

two

Membre actif
6 Novembre 2005
895
290
Namur
Merci à vous deux pour vos réponses
et prendre le problème à l'envers : tu te crées un calendrier "anniversaires" dans iCal et dans ce calendrier tu entres les anniv de chaque personne (jour entier / répéter : tous les ans / fin : jamais / alarme : comme tu veux).
J'y ai pensé mais je me suis demandé s'il n'y avais pas moyen d'éviter de créer un calendrier supplémentaire. De plus utiliser le carnet d'adresse me permettrait de me "souvenir" plus facilement des noms et anniversaires des familles.
Bonjour,

J'utilise le champ "rendez-vous" que je duplique et renomme autant de fois qu'il y a de personnes dans la fiche. Ceci permet d'avoir le nom de chaque personne et sa date de naissance.
Ensuite, j'ai fait un script qui va récupérer ces infos pour les mettre sous ical.
Grâce à Automator, le script s'exécute tout seul à la bonne fréquence (une fois par mois par exemple),

Si ça t'intéresse, fais le moi savoir,

Cordialement
Nicolas

Cela me semble correspondre à mes besoins, c'est donc avec grand intérêt que je testerais ton script. :zen:
 

les_innommables66

Membre expert
Club MacG
26 Février 2006
1 148
120
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:DureeAlarmeEnMinutes}
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
 
  • J’aime
Réactions: two

two

Membre actif
6 Novembre 2005
895
290
Namur
Hello,
Testé et adopté ;)

J'ai juste eu a modifier le script pour que la l'intitulé me corresponde plus et pour avoir trois alarmes au lieu d'une (10 jours avant, 1 jour avant et le jour même - chaque fois à midi)

Un grand merci :zen: