Les actions de dossier avec AppleScript
Devenez extrêmement productif sous Mac
Le 2013-06-04 08:03:11, par PBELL, Membre éprouvé
Bonjour à tous,
Les actions de dossier sur Mac permettent de réaliser automatiquement des tâches variées qui deviennent vite indispensables.
Cependant, les créateurs de ces actions sont régulièrement confrontés à des problèmes, principalement du fait d'une connaissance partielle des mécanismes en jeu.
Pour répondre aux multiples demandes d'aide dans ce domaine, j'ai réalisé mémo pour ceux qui veulent écrire des actions de dossier en AppleScript.
Les nombreux exemples de scripts commentés devraient permettre d'utiliser toute la puissance des actions de dossier pour vos scripts.
Voici le lien vers cet article :http://mac.developpez.com/cours/actiondossierapplescript/
Et vous, avez-vous rencontré des problèmes sur des actions de dossiers ? Comment les avez-vous résolus ?
Bonne journée à tous.
Les actions de dossier sur Mac permettent de réaliser automatiquement des tâches variées qui deviennent vite indispensables.
Cependant, les créateurs de ces actions sont régulièrement confrontés à des problèmes, principalement du fait d'une connaissance partielle des mécanismes en jeu.
Pour répondre aux multiples demandes d'aide dans ce domaine, j'ai réalisé mémo pour ceux qui veulent écrire des actions de dossier en AppleScript.
Les nombreux exemples de scripts commentés devraient permettre d'utiliser toute la puissance des actions de dossier pour vos scripts.
Voici le lien vers cet article :http://mac.developpez.com/cours/actiondossierapplescript/
Bonne journée à tous.
-
kOrt3xModérateurMerci à toi pour cet article.
Il est vrai que les actions de dossier sous Mac OS X sont méconnus et donc très peu utilisés, mais ils peuvent être très pratiques.le 04/06/2013 à 8:53 -
RyuAutodidacteExpert confirméBonjour PBELL,
Merci pour cette article d'une grande aide et qui va m'enlever certaines épines du pieds
J'espère pouvoir l'adapter pour du flux Indesign => PDF dont plusieurs Dossier IN (3) de réceptions de fichiers selon le type de PDF voulu avec redirection dans l'un des 3 dossiers Out
Edit : concernant le "@" dans ton article pour les permissions des fichiers que l'on peut voir avec ls -l Fichier, voilà ce que j'ai trouvé :
http://www.macpuissancedix.com/937.php
Extrai : … Le résultat de la commande se trouve sur la dernière ligne de la figure 1. Le groupe de 9 caractères dont il a été question est précédé par un tiret, et terminé par un @ (qui indique qu'il y a des attributs étendus) ….
En faisant un test avec le ls -l je suis tombé avec un fichier vidéo dont il n' avait pas les attributs étendus, du coup je pense (donne moi ton avis),
qu'il serait peut être judicieux de mettre le code sans prendre en compte l'@
Code applescript : repeat until (LS_Debut = "-rwx") and not (PosArobase = "@") and not (LS_Fin = "------")
Code applescript : repeat until (LS_Debut = "-rwx") and not (LS_Fin = "------")
à voir …
je continue à travailler dessus car qq chose me titille dans le cas ou le script ne trouve pas le fichier provoquant une erreur "number 1",
mais dans ce cas là on risque d'avoir une boucle infini.
Et le problème pour l'instant de mon coté, je vois pas comment lui dire de sortir de la boucle avec un message au bout d'un certain temps
PS : je suis reparti d'un code que tu as fais sur le forum
En attendant j'ai fait cela en phase de tests (j'ai pris un fichier plus lourd, mais à la base se sera avec des fichiers InDesign to PDF) :
Code applescript : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41set A to POSIX file "/Users/UserName/Documents/Fichiers/Film/monfilm.mp4" set Desti to "/Users/UserName/Desktop/Scripts/HOT FOLDER/Film HD_IN" set B to POSIX file Desti tell application "Finder" ignoring application responses duplicate A to B end ignoring --display dialog "Copie lancée" end tell activate if CopieTerminee(A, Desti) then display dialog "copie terminée" else display dialog "copie non terminée ou fichier non existant" end if on CopieTerminee(Source, Destination) -- retourne "true" quand la copie du fichier Source vers le directory Destination est terminée tell application "Finder" to set Nom_Source to name of file Source set Fichier to quoted form of (Destination & "/" & Nom_Source) set Check_Droit to "xxx" set Cpt to 0 repeat until Check_Droit contains "-rwxrwxrwx" set Cpt to Cpt + 1 --display dialog Cpt try set Check_Droit to do shell script "ls -l " & Fichier on error set Check_Droit to "xxx" end try if Cpt = 10 then exit repeat end repeat if Cpt = 10 then return false else return true end if end CopieTerminee
Edit 2 :
l'autre version (PS : pour ma par je ne ferais pas de copie, mais je récupérerai le chemin des fichiers à traiter dans un fichier texte via la commande "sed")
Code applescript : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35set A to POSIX file "/Users/UserName/Documents/Fichiers/Film/monfilm.mp4" set B to POSIX file "/Users/UserName/Desktop/Scripts/HOT FOLDER/Film HD_IN" tell application "Finder" ignoring application responses duplicate A to B end ignoring --display dialog "Copie lancée" end tell activate if CopieTerminee(A, B) then display dialog "copie terminée" else display dialog "copie non terminée ou fichier non existant" end if on CopieTerminee(Source, Destination) -- retourne "true" quand la copie du fichier Source vers le directory Destination est terminée set Lsize to -1 try tell application "Finder" to set Nom_Source to name of file Source log Nom_Source set FichierCopie to (Destination as string) & ":" & Nom_Source delay 0.1 set X to 0 repeat until Lsize = X set Lsize to X tell application "Finder" to set X to physical size of file FichierCopie delay 0.3 end repeat return true on error return false end try end CopieTerminee --tell application "Finder" to set X to physical size of file POSIX file "/Users/kbelmehdi/Desktop/Scripts/HOT FOLDER/IN/668-669_FRG0919.indd"
le 28/10/2019 à 14:14 -
clavier12AZQSWXMembre éclairébonjour,
je découvre l'apple script (on est en 2022).
savez-vous s'il est encore possible en 2022 de parcourir un calendrier, d'analyser le titre d'un événement et de changer la couleur ?
Avec les google app (app script), on peut le faire très simplement :
j'aimerai bien savoir si ce script est "convertissable" en apple script ?Code JavaScript : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17var calendar = CalendarApp.getCalendarById('mon_mien@group.calendar.google.com'); var beginDate = new Date(1970, 0, 1); var endDate = new Date(2500, 0, 1); var events = calendar.getEvents(beginDate, endDate); for (var i=0; i<events.length; i++) { var event = events[i]; var title = event.getTitle(); if (/Submission:/.test(title)) { event.setColor('3'); } else if (/Test:/.test(title)) { event.setColor('5'); } else if (/Subscription:/.test(title)) { event.setColor('9'); } else {event.setColor('4'); //sinon couleur par défaut} }
le script est très simple :
- on ouvre le calendrier par son id
- on collecte les évenements dedans, bornées à 2 variables de date
- on regarde le titre
- si le titre contient tel mot, alors on attribut telle couleur à l'event
ça fonctionne super bien dans Google Agenda/calendar, il doit forcément y avoir un moyen qu’Apple permette cela aussi, non ?
merci de votre réponse, même si tardive.le 24/02/2022 à 12:00