Exporter Contacts Sélectionnés dans ENTOURAGE vers EXCEL

BenMaslow

Membre confirmé
8 Avril 2007
38
0
Bonjour je fais des recherches pour exporter des contacts que j'aurais sélectionné dans Entourage pour les exporter dans Excel pour différents usages (listes de présence, etc…), n'étant pas possible de le faire avec les fonctions natives du programme j'ai fait des recherches à l'aide de mon meilleur ami google et j'ai trouvé un applescript, mais son usage m'est impossible. Ça ne marche tout simplement pas, et je suis sûr que c'est parce que je fais n'importe quoi. une âme charitable pourrait me guider… peut être ?



Export Contacts to Excel

Let us finish with an example of a very useful interlinking of Entourage with Excel, as a demonstration of what can be done with Office AppleScript that would never have been possible when you were restricted to VBA. In fact, it would do you no good to do the Excel part of the script in VBA, since it cannot return results to AppleScript, not even using the run VB macro command that presently still works in 2004.

People often want to export information – usually contact information – from Entourage to Excel. At the moment the only way to do it without AppleScript is to export the entire address book (and only the local "On My Computer" one at that) to a tab-delimited text and then import the text file into Excel.

But then you're stuck with perhaps thousands of contacts you don't need, and about 65 fields, all of them, including columns for no fewer than 13 email addresses per contact, but missing the Category information that might be crucial. You have to spend hours manually deleting rows (contacts) and columns (fields). You could, perhaps, be a little more selective doing a mail merge to Word, but you still would not have your information in a format (a table) that you could get over to Excel.

With AppleScript, it's a cinch. For this example, I am choosing contacts by category – all contacts of the category "Work". You could make it whichever category you want, of course, or even a combination of categories. Or you could specify only contacts whose last name starts with "B" or contacts whose company is "Consolidated Fruit, Inc.", or any whose filter whatsoever on any field whatsoever.

Or you could select contacts in the address book or a custom view and get the selection, remembering to check the class of the items as several scripts above have done. Anything. You can specify only the fields you are interested in, and no more: no need to delete any columns over in Excel. In the example here, I have chosen 16 fields, but you might only need 3 or 4: perhaps only last name, first name, email and (work) phone. As usual, comments follow the script.

Bloc de code:
tell application "Microsoft Entourage"

     set theContacts to every contact where its category ¬

          contains {category "Work"} --OR:

     --set theContacts to the selection

    

     set allContactProps to {{"Last Name", "First Name", "Title", ¬

          "Company", "Department", "Email", "Work Phone", "Cell Phone", ¬

          "Home Phone", "Assistant", "Street", "City", "State", "Zip", ¬

          "Spouse", "Notes"}} -- header row as first sublist

     repeat with theContact in theContacts

          try

              set email to (first email address of theContact whose ¬

                   label is work)

          on error

              try

                   set email to default email address

              on error

                   set email to ""

              end try

          end try

          tell theContact

              set contactProps to {last name, first name, ¬

                   job title, company, department, email, business phone number, ¬

Peut être des détails intéressants ? :
http://www.microsoft.com/mac/develo...d9ded1f4-0ed2-4266-944b-81b1f6312d891033&ep=7


Merci d'avance pour toute l'aide que vous nous apporté chaque jour !

Bonne journée à tous
 
Bonjour,

Je ne vois pas où est la difficulté :confused:

Dans Entourage, tu cliques sur l'icône Contact.
Fichier + Exporter
"Que voulez-vous exporter ?" Tu choisis "Contacts vers une liste (texte délimité par des tabulations)".
Et tu obtiens un fichier "Exportation des contacts.txt" que tu ouvres dans Excel : toutes les données de tes contacts y sont.
 
.../... j'ai trouvé un applescript, mais son usage m'est impossible. Ça ne marche tout simplement pas, et je suis sûr que c'est parce que je fais n'importe quoi. une âme charitable pourrait me guider… peut être ?
Je regarderai ce soir (si j'ai un peu de temps). Il est possible qu'il faille adapter un peu le script (le franciser ?) pour qu'il fonctionne, difficile à dire sans faire quelques essais.

Tel qu'il est là (encore qu'il soit incomplet dans ta copie) il tente d'exporter les contacts de la catégorie "Work", or cette catégorie n'existe pas forcément chez toi (il y a même de bonne chances que tu aies plutôt "Travail"). Si tu modifies les deux lignes comme suit :

Bloc de code:
     -- set theContacts to every contact where its category ¬

          --contains {category "Work"} --OR:

     set theContacts to the selection

tu devrais pouvoir appliquer le script à la sélection (aux contacts préalablement sélectionnés). Mais sous réserve qu'il n'y ait pas d'autres problèmes ailleurs...


Pour Boddy : ta solution fait un export complet de tout le carnet d'adresses. A priori, ce n'est pas ce que BenMaslow cherche à faire (il veut peut-être s'épargner le ménage à faire ensuite dans un fichier trop gros...)

---------- Nouveau message ajouté à 18h49 ---------- Le message précédent a été envoyé à 16h52 ----------

Moyennant quelques modifications (mineures, et plutôt pour le confort) on arrive à quelque chose de très correct :

Bloc de code:
tell application "Microsoft Entourage"
	--set theContacts to every contact where its category ¬
	--contains {category "Travail"} -- pour exporter les contacts de la catégorie "Travail"
	set theContacts to the selection -- pour exporter les contacts sélectionnés
	
	set allContactProps to {{"Nom", "Prénom", "Titre", ¬
		"Société", "Service", "Email", "Téléphone professionnel", "Téléphone mobile", ¬
		"Téléphone domicile", "Assistant", "Rue", "Code Postal", "Ville", ¬
		"Conjoint", "Notes"}} -- header row as first sublist
	repeat with theContact in theContacts
		try
			set email to (first email address of theContact whose ¬
				label is work)
		on error
			try
				set email to default email address
			on error
				set email to ""
			end try
		end try
		tell theContact
			set contactProps to {last name, first name, ¬
				job title, company, department, email, ¬
				business phone number, ¬
				mobile phone number, ¬
				home phone number, ¬
				assistant phone number, ¬
				business address's street address, ¬
				business address's zip, ¬
				business address's city, ¬
				spouse, ¬
				description}
		end tell
		set end of allContactProps to contactProps
	end repeat
	set numRows to count allContactProps
	set numColumns to count (item 1 of allContactProps) -- 16 here
end tell

tell application "Microsoft Excel"
	set newWkbk to make new workbook with properties ¬
		{name:"Work Contacts"}
	set lastCell to get address (get offset (range ¬
		"A1" of active sheet of newWkbk) row offset (numRows - 1) ¬
		column offset (numColumns - 1))
	set theRange to range ("$A$1:" & lastCell) ¬
		of active sheet of newWkbk
	
	set value of theRange to allContactProps
	--autofit theRange -- ne fonctionne pas dans Excel 2008
end tell

Chez moi, ça fonctionne très bien (sous réserve d'avoir sélectionné au moins un contact du carnet d'adresse avant de lancer le script, bien sûr...) Après, on peut aussi bricoler un peu, par exemple en remplaçant "business" par "home" pour les adresses, etc.