Ajout de comment. Spotlight à des contacts par AppleScript

TingTingBen

Membre confirmé
19 Août 2010
14
0
Bonsoir tout le monde,

Je crains d'avoir une requête bien élaborée à vous soumettre... Automator ne m'est d'aucune aide et les maigres bouts de script que j'ai pu trouvés ne suffisent pas.

J'aimerai trouver un script qui sélectionne parmi mes contacts (dument enregistrés dans le Carnet d'adresses) ceux dont c'est l'anniversaire le jour où le script est lancé, et qui par un miraculeux procédé ajoute un commentaire Spotlight aux fichiers correspondants (ceux stockés dans /Users/UserName/Library/Application Support/AddressBook/Metadata typiquement). Ce procédé pourrait peut-être mettre à profit l'ID des contacts puisqu'il est utilisé pour le nom des fichiers stockés dans le dossier sus-nommé.

La cerise sur le gâteau serait, au début du script, de supprimer les commentaires Spotlight de tous les contacts afin qu'une fois le script exécuté et jour après jour il n'y ai vraiment que les contacts du jour J affublés d'un commentaire.

L'un d'entre vous aurait-il une idée pour ça ?
 
Bonjour,

L'un d'entre vous aurait-il une idée pour ça ?

Oui, ce script recherche dans le champ "date de naissance" du carnet d'adresses, le jour et le mois qui correspond à aujourd'hui :
Bloc de code:
property tFolder : (path to application support folder from user domain as string) & "AddressBook:Metadata:"

tell application "Finder" to set comment of files of folder tFolder to ""
my getBirthday(current date)

on getBirthday(d)
	set jour to day of d
	set mois to month of d
	tell application "Address Book" to repeat with i in (get people whose birth date is not missing value)
		set d1 to birth date of i
		if day of d1 is jour and month of d1 is mois then
			set tName to (text 1 thru -10 of (get id of i)) & "/ABPerson.abcdp"
			my setComment(tFolder & tName)
		end if
	end repeat
end getBirthday

on setComment(tFile)
	tell application "Finder" to set comment of file tFile to "anniversaire"
end setComment
 
Merci pour ta réponse plus que rapide ! Et ça fonctionne parfaitement !

Dernier détail, est-il possible de forcer le Carnet d'adresses à rester invisible lors du processus ?
 
Dernier détail, est-il possible de forcer le Carnet d'adresses à rester invisible lors du processus ?

Ici, il reste invisible.

Sinon, c'est comme ceci
Bloc de code:
property tFolder : (path to application support folder from user domain as string) & "AddressBook:Metadata:"

launch application "Address Book"
tell application "System Events" to set visible of process "Address Book" to false

tell application "Finder" to set comment of files of folder tFolder to ""
my getBirthday(current date)

on getBirthday(d)
	set jour to day of d
	set mois to month of d
	tell application "Address Book" to repeat with i in (get people whose birth date is not missing value)
		set d1 to birth date of i
		if day of d1 is jour and month of d1 is mois then
			set tName to (text 1 thru -10 of (get id of i)) & "/ABPerson.abcdp"
			my setComment(tFolder & tName)
		end if
	end repeat
end getBirthday

on setComment(tFile)
	tell application "Finder" to set comment of file tFile to "anniversaire"
end setComment