# Apple Script: actions de dossiers



## Pochtroi (24 Mars 2005)

Je découvre Apple Script et ne comprend à vrai dire pas tellement comment ça marche. Je cherche depuis un moment à réaliser un programme tout con mais qui ne veux pas fonctionner. J'espere que vous pourrez m'aider...

Lors de l'ouverture d'un dossier spécial dans le finder, j'aimerais voir se lancer un petit film Quicktime qui se trouve dans ce meme dossier. J'ai donc créé mon script qui se contente d'ouvrir le film et de le lire dans QuickTime:	tell application "QuickTime Player"
								activate
								open file _le chemin vers le film_
								play movie _le film_							end tell
J'ai découvert avec joie une application nommée "configuration des actions de dossiers" dans le dossier Apple Script. J'ai donc sélectionné mon dossier puis mon script et, ôôôô malheur, rien ne se passe, que j'ouvres le dossier ou que je fasse quoi que ce soit à l'intérieur ! J'ai cherché à comprendre le problème mais je n'ai rien trouvé qui solutionne mon problème et j'ai beaucoup de mal à trouver une liste de commandes et des explications claires...


----------



## Didier Guillion (24 Mars 2005)

Quand tu lance ton script manuellement, est ce que cela fonctionne ?

Cordialement


----------



## Pochtroi (24 Mars 2005)

bien sur, sinon je ne serais pas passé à l'étape suivante...


----------



## FredoMkb (24 Mars 2005)

Bonjour 



			
				Pochtroi a dit:
			
		

> Lors de l'ouverture d'un dossier spécial dans le finder, j'aimerais voir se lancer un petit film Quicktime qui se trouve dans ce meme dossier. J'ai donc créé mon script qui se contente d'ouvrir le film et de le lire dans QuickTime:	tell application "QuickTime Player"
> activate
> open file _le chemin vers le film_
> play movie _le film_							end tell
> J'ai découvert avec joie une application nommée "configuration des actions de dossiers" dans le dossier Apple Script. J'ai donc sélectionné mon dossier puis mon script et, ôôôô malheur, rien ne se passe, que j'ouvres le dossier ou que je fasse quoi que ce soit à l'intérieur !



Les "actions des dossiers" consiste à attacher un script spécifique à un dossier précis (ou plusieurs dossiers).

Mais, pour que le script se lance lorsqu'on effectue une action sur le dossier en question, il faut que le script comporte un gestionnaire adapté à cette action.

Pour exemple, lorsqu'on double-clic sur un script (en tant qu'application autonome), AppleScript (AS) exécute automatiquement l'ensemble du code qui se trouve dans le gestionnaire "on run ... end run" du script (qui est le gestionnaire par défaut, et donc implicite dans tout script AS). 

De même, lorsqu'on souhaite lancer un script par glisser/déposer d'un élément sur son icône, il faut que le script comporte un gestionnaire "on open ... end open" pour qu'il s'exécute.

Alors, pour revenir aux "actions des dossiers", ceux-ci ont aussi besoin d'un ou plusieurs gestionnaires spécifiques, selon l'action qui doit déclancher le script.

Dans ton cas, le gestionnaire qui déclancherais ton script à l'ouverture d'un dossier, serait :


> on opening folder MonDossier
> -- Le script à lancer
> end opening folder


La variable contextuelle "MonDossier" prend automatiquement la valeur du chemin d'accès du dossier contenant le script attaché.

Dès lors, dans ton cas, je pense que le code suivant serait une piste à explorer (je ne l'ai pas testé, je n'aime pas trop utiliser les scripts des dossier... mais peut-être que j'ai tort finalement...) :


> on opening folder MonDossier
> set MonChemin to (MonDossier as alias) as text
> set MonFilm to MonChemin & "MonFilm.mov"
> tell application "QuickTime Player"
> ...


La variable "MonChemin" reprend le chemin d'accès du dossier et le converti en texte.
La variable "MonFilm" s'obtient par concaténantion entre la variable "MonChemin" et le nom du fichier vidéo à ouvrir, dans mon exemple "MonFilm.mov".
C'est cette dernière variable qui sera utilisée par l'application "QuickTime Player" afin de trouver le chemin d'accès au fichier à lire...

Tu peux trouver les différents gestionnaires qui s'utilisent avec les actions des dossier, en regardant le dictionnaire AS des "Compléments standards" (ou "Standard Additions").

Pour d'autres infos bien plus complètes, et pour explorer les autres gestionnaires applicables aux dossier, va jetter un coup d'oeil par ici : 
Folder Actions (en anglais).

Voilô


----------



## Pochtroi (13 Avril 2005)

Merci beaucoup, ca marche et c'est de la balle comme on dit !
Par contre j'avouerais que je n'ai pas bien capté... En fait, c'est pratiquement ce que j'avais écrit a l'exception près que je n'utilisais aucune variable (je rentrais seulement le chemin entre guillemets). Le fait est qu'avant il ne marchait pas et maintenant si ! 
Merci


----------



## kathy h (2 Juin 2005)

puisqu'ici on a l'air de s'y connaitre en action de dossier, une personne pourra peut-ête trouver une solution à mon problème ( déjà exposé dans un thead que j'ai ouvert dans le forume Mac OS X ):

voici mon problème : Depuis quelques temps impossible d'activer mes "actions de dossier" dans mon compte utilisateur habituel. 

Quand je vais directement dans le script qui permet ces actions de dossier et que je clic sur
 " exécuter " j'ai le message suivant : 
"error System Events" 
"NSUnKnownScriptError" 

dans console j'ai des messages du genre : [NSCFString boolValue]: selector not recognized 

dans le Terminal quand je tape une ligne de commande pour avoir des renseignements ,  j'ai la réponse suivante :" 2005-06-01 22:26:23.025 System Events[1795] *** -[NSCFString boolValue]: selector not recognized 
2005-06-01 22:26:23.028 System Events[1795] Exception raised during posting of notification. Ignored. exception: *** -[NSCFString boolValue]: selector not recognized" 

Ce qui m'intrigue le plus c'est que dans mon 2ème compte utilsateur les actions de dossier marchent, je peux les activer.....

le soft que j'ai téléchargé recemment et  acheté " fax center" pourrait être la cause de mes souscis? il a son propre système de notification.... 

Je me demande si je ne devrais pas ré installer la MàJ Mac OS X.3.9 pour retrouver mes actions de dossier ou si cela ne hangerait rien à mon problème...


----------



## zeRafioScripter (2 Juin 2005)

Apparament, le problème se situe plutôt au niveau de "System Events".
/System/Library/CoreServices/System Events/

J'ai pensé un moment que ton logiciel de Fax aurait installé une version précédente de ce composant du sytème (la version pour Panther 10.3.9 est la 1.2.1). 
Mais alors comment expliquer que dans ton second compte, le script fonctionne?

Essaye de désinstaller tous les composants de FaxCenter.

Autre chose: si tu nous montrais le script, on pourrait trouver un indice.

 

[Hors sujet: 
Pourquoi utiliser FaxCenter? (c'est une question, pas un reproche!)
Panther a un logiciel de fax intégré qui marche très bien?]


----------



## kathy h (2 Juin 2005)

Le logiciel de fax " fax center "  n'est pas installé sur mon autre compte car quand je vais sur ce compte essai et que j'ouvre fax center il me demande mon numéro de licence alors même que je l'ai rentré quand j'étais sous mon autre compte utilisateur.. je trouve ça étrange car c'est le même logiciel et le même ordi ..

fax center je ne m'en sert que pour envoyer des fax par pour en recevoir , car quand un fax est envoyé j'ai une notification me disant que le fax a été envoyé avec succès or sous panther rien ... voilà pourquoi j'ai acheté ce soft à 10 ¤....

je vais vérifier la version de system events, mais comment obtenir la dernière version1.2.1  si fax center a installé une ancienne version? 

merci d'avoir répondu

Edit : c'est bien la version 1.2.1 

je vais essayer de désinstaller fax center car je pense que c'est depuis que j'ai ce soft que ça ne marche plus..... et si cela marche sur l'autre compte c'est justement que je n'ai rentré aucune préférence pour ce soft ni le numéro de licence.....


----------



## Leyry Hynemonth (2 Juin 2005)

kathy h a dit:
			
		

> fax center je ne m'en sert que pour envoyer des fax par pour en recevoir , car quand un fax est envoyé j'ai une notification me disant que le fax a été envoyé avec succès or sous panther rien ... voilà pourquoi j'ai acheté ce soft à 10 ¤....



D'après mon expérience avec le fax de Panther, quand il y à un problème, il te le dis... A moins que tu cherche spécialement à avoir un rapport d'émission pour avoir une preuve juridiquement valable ???


----------



## kathy h (2 Juin 2005)

Leyry Hynemonth a dit:
			
		

> D'après mon expérience avec le fax de Panther, quand il y à un problème, il te le dis... A moins que tu cherche spécialement à avoir un rapport d'émission pour avoir une preuve juridiquement valable ???



avec le fax de panther il n'y a aucune notification quand on fax,  mais peu importe ..

zeRafioScripter : bon j'ai jetté tous les éléments de fax center à la poubelle, relancer la machine, mais ça ne change rien au problème........toujours pas possible d'activer les actions de dossier....


----------



## FredoMkb (2 Juin 2005)

Mmm... petites questions innocentes... mais on ne sait jamais   

1. As tu essayé exactement le même script dans les deux sessions ?

2. As tu essayé le même script sans le déclancher avec une action de dossier ?

3. As tu essayé avec un tout petit script de dossier, le plus basique possible ?

4. As tu essayé d'ouvrir et re-enregistrer le script ?

5. As tu essayé d'utiliser les "System Events" autrement que par des actions de dossier ?

6. As tu essayé d'arrêter puis de relancer les actions de dossiers ?

7. As tu regardé du côté des autorisations ? (je crois pas trop que ce soit ça, mais bon...)

8. As tu essayé de te reveiller de ce pénible cochemard ?  :rateau:   

Enfin... je n'ai pas la moindre idée de la cause de ton problème, mais peut-être qu'en explorant un peu plusieurs pistes, tu trouveras une solution... je te le souhaite


----------



## kathy h (2 Juin 2005)

si tu savais tout ce que j'ai pu essayer depuis 24 heures... voilà la dernier message de bompi sur macgé :

Il me reste donc deux idées :

 1) virer tous les scripts utilisés par System Events histoire de voir. Quand je dis virer, c'est bien entendu mettre de côté.
 2) utiliser ktrace
 - vérifier avec Activity Monitor que System Events ne tourne pas (ce qui doit être le cas)
 - ouvrir un terminal
 - lancer la commande suivante
 ktrace /System/Library/CoreServices/System\ Events.app/Contents/MacOS//System\ Events

 normalement, elle devrait te rendre la main assez vite car cela plante chez toi.
 - tu trouveras alors un fichier "ktrace.out" qui n'est pas lisible directement mais avec la commande "kdump".
 - si tu veux le lire tu fais donc :
 kdump > ktrace.txt
 et tu édites le fichier ainsi obtenu : méfie-toi, ça va être du brutal, du lourd
 - si ça t'ennuie, tu peux m'envoyer "ktrace.out" zippé (à mon mail perso, vu l'embompoint probable)

 Il y a une autre idée (la réinstallation) qui est une option que j'écarte d'une main ferme (on a sa fierté, crébonsoir !)





j'ai donc lancé sa commande via le terminal et voici la réponse : 
2005-06-02 23:52:52.128 System Events[495] *** -[NSCFString boolValue]: selector not recognized
2005-06-02 23:52:52.130 System Events[495] Exception raised during posting of notification.  Ignored.  exception: *** -[NSCFString boolValue]: selector not recognized

je ne trouve pas de  fichier ktrace.out je me suis arrêtée là....


----------



## zeRafioScripter (3 Juin 2005)

Il en est passé du monde pendant que je dormais! :rateau:



			
				kathy h a dit:
			
		

> virer tous les scripts utilisés par System Events histoire de voir.


Ce n'est pas System Event qui utilise des scripts, mais le contaire. 
Je veux dire que tu peux avoir soixante douze mille scripts d'action de dossier sur ton disque, tant que tu ne les actives pas (que tu ne fais aucune "action" avec les dossiers auxquels ils sont atachés), il "n'existent pas".
Cette procédure est donc inutile. 




			
				kathy h a dit:
			
		

> bon j'ai jetté tous les éléments de fax center à la poubelle, relancer la machine, mais ça ne change rien au problème........toujours pas possible d'activer les actions de dossier....





			
				kathy h a dit:
			
		

> Quand je vais directement dans le script qui permet ces actions de dossier et que je clic sur "exécuter" j'ai le message suivant:
> "error System Events"
> "NSUnKnownScriptError"




Je ne comprends pas bien: le "script qui permet ces actions de dossier" c'est lequel?
[1]- celui que tu as attaché à ton dossier
[2]- l'application /Applications/AppleScript/Configuration des actions de dossier/
[3]- le script /Library/Scripts/Folder Actions/Enable Folder Actions.scpt

le [3] ne contient que cette commande:

```
tell application "System Events" to set folder actions enabled to true
```
Si c'est cette simple commande qui génère l'erreur dans *un seul* compte utilisateur, je ne vois qu'une explication: un conflit entre deux composants sytème. 
Est-ce FaxCenter le fautif? On risque de chercher pendant beaucoup plus de temps qu'il ne t'en faudra pour une clean-install...


Quid?


----------



## kathy h (3 Juin 2005)

zeRafioScripter a dit:
			
		

> Il en est passé du monde pendant que je dormais! :rateau:
> 
> 
> Ce n'est pas System Event qui utilise des scripts, mais le contaire.
> ...




En fait c'est l'activation des actions de dossier qui ne fonctionne plus. Si je choisie n'importe quel dossier et que je fais un ctrl dessus j'ai beau cliquer sur " activer les dossiers" cela ne marche plus.

pour comprendre pourquoi cela ne marchait plus je suis allée directement dansle dossier " folder action" situé dans le dossier Script de la bibliothèque ( à la racine ) j'ai donc ouvert le script " enable folder action ( celui qi permet les actions de dossier et dont le menuc contextuel nous permet d'acitiver directement ) et lorsque j'ia voulu excécuter directement ce script j'ai eu le message d'erreur sité plus haut..

c'est plus clair? 

Pour ce qui est de faire une clean install je n'ai pas tres envie, d'autant plus que d'ici quelques temps je mettrais tiger.
je pense que c'est " fax center " qui a mis la paigaille et même une fois jetté ça ne change rien....je vais continuer de chercher à comprendre pourquoi mais sans plus, et je me passerais des actions de dossier pourtant si pratique en attendant tiger ( j'attends la version 10.4.3 pour l'installer ) J'ai bien pensé ré installer la version 10.3.9 combo par dessus ma 10.3.9 peut etre que c'est une solution en tout cas moins   radicale qu'une nouvelle installation de panther avec des tonnes de MàJ derrière ( j'ai la 10.3.3 ) alors que dans quelques temps je vais le faire pour tiger alors non pas de réinstallation .... 

voilà


----------



## zeRafioScripter (3 Juin 2005)

C'est effectivement plus clair.

Peux-tu lancer le script suivant depuis "éditeur de script" et me dire le résultat?

```
tell application "System Events"
	folder actions enabled
end tell
```

Sinon, as-tu essayé de réparer les autorisations depuis "Utilitaire de disques" (et pas depuis un "third-party")?

Mais puisque les "actions de dossiers" marchent dans une autre session, pourquoi ne pas en créer une nouvelle avec les droits d'administrateur et la définir comme session au démarrage?
Si certains fichiers/dossiers posent problème par la suite, il te suffira d'en changer les autorisations avec BatChmod.


----------



## kathy h (3 Juin 2005)

voici le message en pièce jointe : 

question : si je change de compte utilsateur pour utiliser mon 2ème  compte utilsateur  comment faire pour que ce compte essai qui n'est pas un compte administrateur le devienne? peut on avoir 2 comptes administrateur?

par ailleurs il va falloir que je transfert dans ce compte tous les règlages de l'autre compte ( donc le compte actuel ) ect..... Y a t'il ne méthode rapide pour faire cela : par ex pour safari retrouver tout, même chose pour mes mails...


----------

