Encore un souci mais on touche au but
Salut PBell,
Lorsque mes scripts seront au point je les testerais en grandeur nature au boulot. Là, on a des machines plus puissantes et me rendrais compte si la relative lenteur que je ressens chez moi est réelle ou pas. Je vais également regarder de près ton tutoriel quant à la suppression des actions attachées à des dossiers. Mais pour l'instant j'ai encore un soucis.
J'ai incorporé donc à mon script Aciont PDF 1 appele à un processus Automator pour réduire la taille des fichiers PDF entrant.
Tu m'a indiqué quand rajoutant à l'instruction "Duplicate" la mention "With replacing" cela permettait d'écraser un fichier portant le même nom.
Alors effectivement, cela marche bien maintenant mais du coup mon processus Automator ne s'applique pas.
J'ai donc le fichier 01.pdf dans la dossier --PDF qui pèse 758 ko. Dès qu'il passe dans le dossier où il doit être allégé (Save/Assistantes/AFC/Nom_Dossier), il pèse 336 Ko. Donc ça marche sauf que si quelques minutes plus tard, je remouline ce fichier 01.pdf, il arrive dans --PDF toujours à 758 Ko et il passe dans le dossier Save/Assistantes/AFC/Nom_Dossier mais là il ne fait plus 336 Ko mais 758 Ko. J'en déduis alors que le processus automator ne s'est pas appliqué ce qui est fâcheux puisque c'est le but de la manœuvre : obtenir des fichiers allégés.
Peut-être ai-je mal placé l'appel à mon processus automator ?
Sans vouloir trop t'ennuyer, je te rappelle ci-dessous les codes de mes 2 scripts (celui créant les dossiers des clients et attachant le script Action PDF et le script "Action PDF" qui fait appel à mon processus automator "ActionDossier-ASSISTANTES.workflow").
Ainsi tu auras une vision de l'ensemble car j'imagine que depuis le temps, tu as peut-être perdu le fil.
Script 1 :
Code:
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 41 42 43 44 45 46 47 48 49 50 51 52
| set Action to "Action PDF.scpt" -- le nom de l'action de dossier enregistrée dans Bibliothèque / Scripts / Folder Action Scripts
set Dos_Emp to "HDD:TRAVAUX:ActionDossierTravauxEnCours:AFC"
set N_Pub to "PUB" -- Nom du sous dossier du dossier client
set N_PDF to "--PDF" -- Nom du sous dossier du sous dossier PUB du dossier client
set C_PDF to 6 -- Index couleur du sous dossier PDF
set N_Valid to "VALIDATION" -- Nom du sous dossier du sous dossier PUB du dossier client
set C_Valid to 0 -- Index couleur du sous dossier Valid
set N_Links to "LINKS" -- Nom du sous dossier du sous dossier PUB du dossier client
set N_Indiv to "INDIVIDUELLES" -- Nom du sous dossier du sous dossier PUB du dossier client
tell application "Finder"
-- boucle de saisie du nom de client jusqu'à ce que Mon_OK soit vrai (= la saisie n'est pas vide et la dossier n'existe pas déjà)
set Mon_OK to false
repeat until Mon_OK
set Nom_Client to "Nom_Client"
set Saisie to (display dialog "Saisissez le nom du client" default answer Nom_Client)
set Nom_Client to text returned of Saisie
if not (Nom_Client is "") then if not (exists (Dos_Emp & Nom_Client)) then set Mon_OK to true
if not Mon_OK then display dialog "Le nom saisi est vide ou ce nom existe déjà !" & return & "Veuillez resaisir un nom."
end repeat
-- création du dossier client et sous dossier PUB avec ses sous-sous-dossiers PDF, Validation, Link et Individuelles
set D_Client to make new folder in (Dos_Emp as alias) with properties {name:Nom_Client} -- création du dossier client
set D_Pub to make new folder in D_Client with properties {name:N_Pub} -- création du sous dossier PUB
set D_PDF to make new folder in D_Pub with properties {name:"--PDF"}
set label index of D_PDF to C_PDF
set D_Valid to make new folder in D_Pub with properties {name:N_Valid}
set label index of D_Valid to C_Valid
make new folder of D_Pub with properties {name:N_Links}
make new folder of D_Pub with properties {name:N_Indiv}
end tell
-- Assignation de l'action de dossier au dossier "--PDF"
-- Récupération du chemin par défaut des Folder Action Scripts dans le domaine utilisateur
tell application "System Events" to set Dossier_Scripts to (path to Folder Action scripts folder from user domain) as string
set Mon_Script to (Dossier_Scripts & Action)
-- vérification que le script prédéfini existe. Sinon, on quitte le script !
tell application "Finder"
if not (exists file Mon_Script) then return
end tell
tell application "System Events" to attach action to D_PDF as alias using (Mon_Script as string)
activate -- permet de remettre le script au premier plan pour voir le dialog.
display dialog "Le dossier client " & Nom_Client & " est crée avec succès !" buttons {"OK"} default button 1 giving up after 3 |
Scriipt 2 :
Code:
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 41 42 43 44 45 46
| -- Script à enregistrer dans Bibliothèque / Scripts / Folder Action Scripts
-- On suppose, dans le second script que celui-ci s'appelle "Action PDF"
on adding folder items to Mon_Dossier after receiving Liste_Fichiers
-- bien définir le nom du chemin selon qu'il s'agit d'un disque distant ou d'un dossier sur le même disque !
-- par exemple : Set Chemin_AFC to "Volumes:Mon_Disque_Serveur:Users:Nom_user:Save:Assistantes:AFC:"
set Chemin_AFC to "Save:Assistantes:AFC:"
tell application "Finder"
set Dos_client to container of container of Mon_Dossier -- lit le dossier parent du sous dossier contenant le dossier dans lequel on a déposé les fichiers
set Nom_Client to name of Dos_client
repeat with Fichier in Liste_Fichiers -- boucle car il est possible que l'on aie déposé plusieurs fichiers !
set Nom_Fichier to name of Fichier
-- Si le dossier Nom_Client dans le dossier AFC n'existe pas : on le crée
if not (exists (Chemin_AFC & Nom_Client)) then make new folder in Chemin_AFC with properties {name:Nom_Client}
set N_Fichier to duplicate Fichier to folder (Chemin_AFC & Nom_Client) with replacing --copie du fichier initial vers Chemin_AFC : Nom_Client :
-- attente de fin de téléchargement avant de renommer (vérification que la taille ne change plus)
try
set OldSize to -1
repeat until (size of N_Fichier) = OldSize
set OldSize to (size of N_Fichier)
delay 1
end repeat
end try
end repeat
end tell
tell application "System Events" to set nomProcessus to (((path to workflows folder from user domain) as string) & "ActionDossier-ASSISTANTES.workflow")
tell application "System Events" to attach action to (Chemin_AFC & Nom_Client) as alias using (nomProcessus as string)
end adding folder items to |
C'est dommage, on est si près du but.
Merci encore de ton aide.
Code pour voir où ça coince...
Salut Pbell,
Après un long moment de silence, je reviens vers toi.
J'ai fait une pause sur mon projet et compte m'y remettre.
Tout d'abord, je souhaite voir où j'ai des problèmes.
Si dessous ton conseil :
Code:
Pour voir où ça coince, n'hésite pas à mettre des traces (Tell application "Finder" to display dialog "je suis à la ligne xxx") qui te permettent de bien voir par où passe le code et surtout, où il ne passe pas.
Comment dois-je insérer ce code exactement (ligne de code, endroit précis dans le script...)?
Dois-je le faire sur les 2 scripts ?
Merci d'avance
Tes scripts fonctionnent bien
Salut PBell,
Tes scripts fonctionnent parfaitement, je pense que le souci vient de mon processus automator.
J'ai voulu debbuguer les scripts applescript et aucune erreur a été trouvée. J'ai supprimé l'action de dossier automator lié au dossier Assistantes/Nom_Client (incluse dans le script ACTION PDF.scpt) et tout fonctionne parfaitement. Les fichiers partant de AFC/Nom_Client/PUB/--PDF vers le dossier Assistantes/Nom_Client se remplacent bien, bref tout est parfait.
Donc faut que je revois mon processus automator qui me permet d'alléger le fichiers pdf entrant dans Assistantes/Nom_Client.
J'ai essayé de nombreuses manip sans succès.
En fait, lorsque le fichier X entre pour la 1° fois dans Assistantes/Nom_Client, le processus automator s'exécute bien (le fichier est allégé, il passe de 400 ko à 4 ko). J'attends alors quelques minutes (en fait 1 mn) et je refais la manip avec ce même fichier X et à ce moment là le fichier X est bien remplacé dans AFC/Nom_Client/PUB/--PDF, ce même fichier est bien transmis au dossier Assistantes/Nom_client (l'heure de création de fichier s'incrémente d'1 minute) mais le fichier ne s'allège pas. Il a donc bien remplacé le fichier X déjà présent et qui pesait 4 Ko mais comme il ne s'est pas allégé il pèse 400 ko (son poids initial). J'en déduis donc que le processus automator ne s'exécute pas.
J'ai regardé un peu partout mais pas de piste pour régler ce problème. J'ai qestionné sur des forums mais pas de nouvelles pour l'instant.
J'ai pensé à la possibilité d'inclure dans un processus automator un script applescript.
Penses-tu qu'il soit possible en applescript de supprimer un fichier portant le même nom du dossier Assistantes/Nom_Client (celui qui doit contenir les pdf allégés) ? Si ce la est possible, cela pourrait résoudre mon problème.
Aujourd'hui le nouveau fichier X entrant écrase l'ancien déjà présent mais est-ce possible qu'avant d'entrer, celui déjà présent s'efface (autrement dit pourrait-il voir cela dans une boule de cristal... !