Projetc Builder et AppleScript

bebert

Membre expert
Club iGen
9 Novembre 2000
4 990
318
Europe
Bonjour,

J'ai un projet d'application applescript avec plusieurs scripts (A, B).
Puis-je appeler une fonction du script A à partir du script B ?
 
Bonjour,

Excellente question !

Et bien, personnellement je cherche depuis quelque mois a partager des fonctions ou des variables globales entre plusieurs scripts d'un même projet et je n'ai pas trouvé de solution simple.

Donc, à mon avis, AppleScript est à réserver aux projets très courts car on se retrouve vite avec des sources confus et illisibles. En un mot, c'est crade, clinquant et superficiel.

Par exemple, ceci force à dupliquer les fonctions de base dans chacun des scripts qui en a besoin. Bonjour la maintenance.

C'est une très grosse lacune de ce langage, qui, à mon avis, pénalise fortement son utilisation.

Ce n'est pas la peine de raisonner "objet" si les sources eux mêmes ne peuvent être hierarchisés. (Et certains osent critiquer le langage C...)

Bon, fini le coup de gueule...
wink.gif


Tu peut appeler une méthode d'un script à un autre en utilisant la commande" tell", mais pas question de passer le moindre paramêtre.

Pour les globales, il te faut travailler par... fichier de préférence (XML) !

Si tu veux des détails plus technique sur ces "astuces", n'hésite pas à demander.
Si tu trouve par ailleurs des solutions à ces problèmes n'hésite pas à partager.

Cordialement
 
Mon projet est de faire un catalogue automatisé dans InDesign à partir d'une base de données.
InDesign peut être piloté par scripts AppleScript.
Je voudrais créer une appli dans Project builder qui regroupe tous mes scripts de mise en page mais aussi les appels à la base de données.

Est-ce que l'on peut faire appel à des applescripts à partir d'un script écrit en java par exemple ?
 
Bonjour,

A priori, oui.

Tu peut compiler un script et l'excuter depuis un programme.
Je ne l'ai jamais fait en Java, mais en C c'est possible.
Cela passe par :

OSACompile pour compiler le source AppleScript
OSAExecute pour l'executer
OSADispose pour le liberer,

Cordialement
 
En effet, le travail sur plusieurs scripts dans le même projet n'est pas très simple, en tout cas, la documentation à ce sujet est assez pauvre.
Cépendant, un début de réponse est la commande "load script". Celle-ci permet d'utiliser les routines du script appelé, tout en lui passant les paramètres nécessaires à son fonctionnement.
Je ne l'ai pas encore fait, mais j'ai déjà vu des projets utilisant cette méthode... à explorer donc
wink.gif

a+
 
Pour avoir un exemple fonctionnel de l'utilisation des plusieurs scripts dans un même projet et de la manière de s'en servir avec "load script", il faut jetter un coup d'oeil à l'exmple "Unit Converter" fournie avec les "Dev Tools" (Disk:Developer:Examples:AppleScript Studio:Unit Converter:)... Au fait, le programme charge en mémoire vive (dans des variables globales) tous les scripts au lancement de l'appli. Du coup, leur accès paraît être très rapide... Je trouve aussi cette manière de procéder assez bizarre, mais pour l'instant je n'ai pas trouvé d'autre...
a+
wink.gif
 
--Voici la reponse

--fichier1.applescript

set fonctionapel to (load script file "cheminfichier:fichier2.scptd")

tell fonctionapel
apelfichier()
end tell


--fichier2.scptd // script compilé (save as ...script bundle)

on apelfichier()
display dialog "test"
end apelfichier

(*donc bien faire attention a enregistré le fichier2 sous forme compilée et voila le tour est joué*)