# Applescript et Numbers



## CathyGYM (9 Janvier 2011)

Bonsoir,
Je viens d'écrire un petit script qui récupère des informations dans un fichier texte et qui les retranscrit dans un modèle de fichier "numbers" (iworks). Ce script fonctionne très bien chez moi. Je l'ai donné à un collègue de travail qui avait besoin de la même application, et chez lui celà ne fonctionne pas. Le script ouvre bien le fichier numbers, mais dès qu'il commence à écrire dedans, il obtient le message d'erreur suivant :
_Erreur d'Applescript 
Erreur dans numbers : Il est impossible de régler document "NomDocNumbers" à "Texte à écrire"._

Nous avons comparé nos versions logicielles (Mac OS X, Numbers, Applescript) tout est identique...
Les fichiers utilisés sont rigoureusement les mêmes, avec les mêmes formats.

Quelqu'un a-t-il une idée de ce qui peut provoquer cette erreur ?
Ci joint la partie du code qui plante (en rouge la ligne qui plante) : 

```
set TextAEcrire to "Texte à écrire"
			tell application "Numbers"
				activate
				tell table 1 of sheet "Vols" of document "NomDocNumbers"
					[COLOR="Red"]set value of cell ("C" & j) to TextAEcrire[/COLOR]
				end tell
			end tell
			set j to j + 1
```

NB : la variable j est bien déclarée (cette portion de code est à l'intérieur d'un repeat sur les lignes du fichier texte, qui sont dans TextAEcrire. Je n'ai mis qu'une partie du code pour simplifier.

Merci d'avance... 
CathyGYM


----------



## Anonyme (10 Janvier 2011)

Bonjour,

L'erreur est dans le nom du document :
Le nom sera "*NomDocNumbers*" ou "*NomDocNumbers.numbers*" selon la visibilité de l'extension dans le Finder.

Voici la solution :

```
set t_doc to first document whose its name is "NomDocNumbers" or its name is "NomDocNumbers.numbers"
	tell table 1 of sheet "Vols" of t_doc
```


----------



## CathyGYM (10 Janvier 2011)

Super, c'est exactement çà et çà marche super . Merci Mac_Jac
Si je peux me permettre une autre question :
Existe-t-il la possibilité de sélectionner une feuille numbers et de la rendre active, un peu comme sous VB avec cette ligne pour les fichiers excel :

```
ObjExcel.application.sheets("NomFeuille").select
```
J'ai essayé pas mal de commandes (à taton !), en vain, et je n'ai rien trouvé dans la bibliothèque... J'ai toujours autant de mal avec cette bibliothèque ! Peut-être qu'il faut faire une commande shell ?

Quelqu'un a-t-il une idée ?:rateau:
Merci d'avance


----------



## Anonyme (10 Janvier 2011)

Bonjour,



CathyGYM a dit:


> Existe-t-il la possibilité de sélectionner une feuille numbers et de la rendre active


Non avec les commandes AppleScript de Numbers.

Mais, c'est possible avec l'aide du GUI Scripting, coche la case "*Activer l'accès pour les périphériques d'aide*" des préférences "Accés universel" dans les "Préférences Système...".

voici un exemple

```
tell application "Numbers"
	activate
	my selectSheet("Vols") -- sélectionne la feuille "Vols" du premier document 
	tell table 1 of sheet "Vols" of document 1
		set selection range to range "A1" -- sélectionne la cellule 1
	end tell
end tell

on selectSheet(t_name)
	tell application "System Events" to tell process "Numbers"
		select (first row of outline 1 of scroll area 1 of splitter group 1 of splitter group 1 of window 1 whose name of static text 1 of group 1 is t_name)
	end tell
end selectSheet
```


----------



## CathyGYM (11 Janvier 2011)

Super... Je ne peux pas tester pour l'instant car je ne suis pas chez moi avant demain soir mais je suis sûre que c'est exactement ça qu'il me faut! Concernant la case à cocher j'ai déjà eu besoin de la cocher mais à l'époque je n'avais pas compris ce à quoi cela servait. Peut tu m'en dire plus à ce sujet? Je crois que j'avais du sélectionner cette option pour faire fonctionner un script qui créait des événements iCal... Merci encore...


----------



## Anonyme (12 Janvier 2011)

Bonsoir,



CathyGYM a dit:


> Concernant la case à cocher j'ai déjà eu besoin de la cocher mais à l'époque je n'avais pas compris ce à quoi cela servait. Peut tu m'en dire plus à ce sujet? Je crois que j'avais du sélectionner cette option pour faire fonctionner un script qui créait des événements iCal... Merci encore...


Cela permet a un script AppleScript (par l'application "*System Events*") : 
De simuler un clic (sur un bouton,  un menu ou à un autre élément dans une fenêtre).
De simuler des raccourcis-clavier ou simuler une touche du clavier
D'écrire du texte dans un champ.
D'obtenir des informations sur un élément (menu, bouton, table, static text, text field, etc..) , par exemple : s'il est sélectionné, s'il a le focus, mais ce n'est pas toutes les applications qui permettent ça (en général ceux qui ne sont pas créés avec la technologie d'Apple).


----------



## CathyGYM (13 Janvier 2011)

Merci pour toutes ces infos Mac_Jac. J'ai enfin pu tester l'activation de feuille Numbers, et çà marche nickel, mais je n'en doutais pas un instant...  
Problème résolu.


----------

