# Besoin d'aide / Applescript et Carnet d'adresses



## r e m y (6 Mai 2009)

Je viens chercher de l'aide après avoir galéré sans succès toute la nuit....

Je vous explique le contexte.

j'ai depuis peu un BlackBerry fourni par mon entreprise, mais dont la configuration "sécurité" imposée par l'entreprise, bloque les synchronisations du carnet d'adresse et de l'agenda que je pourrais faire soit via PocketMac soit via MissingSync for BlackBerry.

Du coup, impossible de synchroniser sur ce telephone mes contacts personnels qui se trouvent sur mon Mac dans le Carnet d'adresse.

J'ai trouvé une parade (le BlackBerry accepte de recevoir des VCards par bluetooth et de copier les contacts ou de les mettre à jour dans son carnet d'adresse à partir de ces VCards)

Du coup, j'ai créé dans mon Carnet d'adresse sur le Mac, un groupe intelligent "modifié récemment" qui me liste les contacts mis à jour.

L'idée était d'exporter ce groupe sous forme de VCard de groupe et de l'importer sur le BlackBerry.

Problème, le BlackBerry ne reconait pas ces VCard de groupe et n'en ressort à chaque tentative qu'un seul contact (et pas toujours le même...)

Il faut donc que j'exporte une à une les VCard présentes dans ce groupe intelligent du Carnet d'adresse, pour pouvoir ensuite les envoyer par Bluetooth au BlackBery.

j'ai voulu essayer de créer un APplescript pour cela, mais je ne trouve pas les bonnes commandes... peut-être que ce n'est pas possible, mais avant de jeter l'éponge je viens lancer ici une dernière bouée à la mer.

Donc l'idée de cet Applescript

1 - ouvrir Carnet d'adresse
2 - sélectionner le groupe intelligent "Modifs récentes"
3 - si ce groupe est vide, afficher "pas de mise à jour disponible", quitter Carnet d'adresse et FIN
4 - Si le groupe n'est pas vide, sélectionner chaque fiche une à une et exporter sa VCard sur le bureau

Déjà si j'arrive à ça c'est super (après je raffinerai en essayant de gérer l'envoi au BlackBerry via Bluetooth)

Carnet d'adresse a beau être scriptable, en étudiant les différentes commandes, objets, class, ... disponibles je n'arrive pas à avoir un script fonctionnel.

Si quelqu'un pouvait me donner un coup de main je lui en serais infiniment reconnaissant
 



(Nota, pour la mise à jour en sens inverse de mon acrnet d'adresse ac à aprtir des modifs que j'aurais pu faire sur le BlackBerry, il me suffit depuis le BB de choisir envoyer par Bluetooth tout le carnet d'adresse et je récupère sur le Mac un fichier VCArd contenant tout le carnet du BB. En double-cliquant dessus, ça met à jour les contacts sur le Mac en ajoutant les nouvelles fiches qi j'en ai créé des nouvelles sur le BB)


----------



## pascalformac (6 Mai 2009)

et via un site de gestion de contacts?
Qui peut etre tout simplement le carnet de ton webmail ( perso)

j'en parle car les formats et options import-export ( et synchros) sont plus souples

calgoo , plaxo , email


----------



## r e m y (6 Mai 2009)

C'est pareil.... j'ai testé avec le carnet d'adresses synchronisé sur MobileMe. Mais j'ai les mêmes problèmes. Le BlackBerry ne reconnait pas une VCard de groupe (pour importer directement toutes les mises à jour). IL lui faut UNE VCard par contact (ce qui est stupide car en Export de son carnet d'adresse le BlackBerry crée UNE Vacrd pour tout le Carnet. C'est donc un format qu'il connait!!!)

Je pourrais chercher un gestionnaire de carnet d'adresse qui sache exporter un groupe sous forme d'un paquet de VCards unitaires.... mais je n'ai pas envie d'abandonner Carnet d'adresse (qui me permet aussi de synchroniser le portable de ma femme, celui de ma fille, mon iPOD Touch, ....)

Mon problème est donc de créer ces VCards de façon individuelle depuis Carnet d'adresses.

Lorsqu'il n'y a que quelques contacts à mettre à jour, manuellement je m'en sors. Mais dès qu'il y a une dizaine ou plus de mises à jour, ça devient fastidieux, d'où k'idée de lancer un AppleScript qui me crée ces VCards tout seul.


----------



## zacromatafalgar (6 Mai 2009)

Salut,

Le script suivant devrait te convenir :


```
tell application "Address Book"
	set PathName to "Leo:Users:zacro:Desktop:test:"

	set theP to people of group "Modifs récentes"
	set nbr to count of theP
	if nbr > 0 then
		repeat with i in theP
			set vcardinfo to (vcard of i) as text
			set personName to (name of i) as text
			set target_file to PathName & personName & ".vcf" as text
			try
				set the open_target_file to 	open for access file target_file with write permission
				set eof of the open_target_file to 0
				write vcardinfo to the open_target_file starting at eof
				close access the open_target_file
			on error theErrMsg number theErrNumber
				return theErrNumber
			end try
		end repeat
	else
		display dialog "Pas de mise à jour disponible." buttons {"Ok"} default button 1 with icon 1
                tell application "Address Book" to quit
	end if
end tell
```
Edit : j'ai créé un dossier test sur le bureau pour les essais, il te suffit de rectifier la variable pathName en seconde ligne&#8230;


----------



## r e m y (6 Mai 2009)

Génial! Je teste ça ce soir. A priori ce n'est pas très différent de mes dernières tentatives de scripts... Je regarderai donc où étaient mes erreurs de syntaxes. 

Un grand merci en tous cas


----------



## r e m y (6 Mai 2009)

Yess!!! ça marche! c'est génial!

En fait c'est dans la création des VCard que mon script était totalement à côté de la plaque.

Merci de cet exemple qui me servira sans doute pour d'autres scripts (la cration du fichier, son ouverture, pour aller y écrire les infos, avant de refermer le fichier cible)

C'est parfait

Merci!


----------

