OVH Cloud OVH Cloud

Aide applescript

18 réponses
Avatar
Patty
Bonjour =E0 tous/toutes

Voil=E0 j'ai un petit probl=E8me (que je suppose asseez simple =E0
r=E9soudre) avec Applescript...

Je dois souvent, durant la r=E9daction d'un rapport, concatener deux
fichiers pdf plac=E9 dans un m=EAme r=E9pertoire.

Pour ce faire, j'ouvre une fen=EAtre terminal, me rend dans le
repertoire o=F9 se trouvent ces deux pdf (=E0 coup de cd assez
r=E9barbatifs) puis je lance la commande : gs -sDEVICE=3Dpdfwrite
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=3DFinal.pdf texte1.pdf texte2.pdf

C'est un peu longuet ! ;-)
J'aimerais faire un script macos qui automatise cette t=E2che...
Pour simplifier, je comptais placer ce script dans le r=E9pertoire par
d=E9faut et lorsque je le lance, il automatiserait cette t=E2che...

Malheureusement apr=E8s une recherche rapide sous google je n'ai pas
trouv=E9 la syntaxe pour lancer une commande terminal :-(

Je suppose que c'est basique mais je ne sais pas du tout comment faire.
J'avoue ne pas avoir la patience d'=E9plucher les quelques 250 pages du
guide de r=E9f=E9rence d'apple... ;-)

Une =E2me charitable pour me donner la syntaxe ?

Merci d'avance


Patty

10 réponses

1 2
Avatar
patpro ~ Patrick Proniewski
In article ,
"Patty" wrote:

Bonjour à tous/toutes

Voilà j'ai un petit problème (que je suppose asseez simple à
résoudre) avec Applescript...

Je dois souvent, durant la rédaction d'un rapport, concatener deux
fichiers pdf placé dans un même répertoire.

Pour ce faire, j'ouvre une fenêtre terminal, me rend dans le
repertoire où se trouvent ces deux pdf (à coup de cd assez
rébarbatifs) puis je lance la commande : gs -sDEVICE=pdfwrite
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=Final.pdf texte1.pdf texte2.pdf

C'est un peu longuet ! ;-)
J'aimerais faire un script macos qui automatise cette tâche...
Pour simplifier, je comptais placer ce script dans le répertoire par
défaut et lorsque je le lance, il automatiserait cette tâche...

Malheureusement après une recherche rapide sous google je n'ai pas
trouvé la syntaxe pour lancer une commande terminal :-(

Je suppose que c'est basique mais je ne sais pas du tout comment faire.
J'avoue ne pas avoir la patience d'éplucher les quelques 250 pages du
guide de référence d'apple... ;-)

Une âme charitable pour me donner la syntaxe ?


do shell script

t'as pas du chercher bien loin ;)

patpro

Avatar
Patty
En effet, le seul tutoriel que j'ai trouvé faisait des déclarations
de variables et détaillait les opérations de base... Interessant mais
guère pratique pour le problème que je cherche à résoudre ;-)

La commande marche parfaitement, cependant sait-tu comment spécifier
au applescript de se placer par défaut ds le répertoire où se situe
le script ?

Merci d'avance

Patty
Avatar
Laurent Wacrenier
Patty écrit:
La commande marche parfaitement, cependant sait-tu comment spécifier
au applescript de se placer par défaut ds le répertoire où se situe
le script ?


Récupère la valeur (path to me), calcule le repertoire, met le au
format POSIX, quote le proprement et fait un cd.

Avatar
patpro ~ Patrick Proniewski
In article ,
"Patty" wrote:

En effet, le seul tutoriel que j'ai trouvé faisait des déclarations
de variables et détaillait les opérations de base... Interessant mais
guère pratique pour le problème que je cherche à résoudre ;-)

La commande marche parfaitement, cependant sait-tu comment spécifier
au applescript de se placer par défaut ds le répertoire où se situe
le script ?


je saurais le faire, mais pas du premier coup de tête sans tester avant.
Cela dit, je te recommande de ne pas passer par applescript pour ce que
tu cherches à faire.

Un script shell en .command fera parfaitement l'affaire, et marchera
d'autant plus simplement que ce ne sera pas un mélange bancal
d'applescript et de shell.

exemple a retravailler :

------------------
#!/bin/bash

GS_OPT="-sDEVICE=pdfwrite -dNOPAUSE -dQUIET -dBATCH"

DOC_1=`ls -1 *pdf | head -1`
DOC_2=`ls -1 *pdf | tail -1`

gs ${GS_OPT} -sOutputFile=Final.pdf "${DOC_1}" "${DOC_2}"

------------------

patpro

Avatar
Patty
Bonjour,

après quelques tests, voici le code que j'obtiens :

---- CODE -----
set chemin to path to me
display dialog chemin as string

set cheminUNIX to POSIX path of chemin
display dialog cheminUNIX as string

set commande to "cd " & cheminUNIX
do shell script commande
do shell script "ls"
display dialog the result
---- CODE -----

Pb, on voit dans au deuxième affichage que le chemin d'accès comporte
le nom du script.
Exemple : s'il s'agit du script test présent sur le bureau, cheminUNIX
contient "/Users/Myself/Desktop/test.app"
Lorsque j'essaie d'y accèder par un cd, il me sort donc une erreur...
:-(
Y-a-til une façon élegante d'obtenir le repertoire du script ou
faut-il bidouiller la variable cheminUNIX pour virer le "/test.app"
final ???

Merci


Patty
Avatar
patpro ~ Patrick Proniewski
In article ,
"Patty" wrote:

Bonjour,

après quelques tests, voici le code que j'obtiens :

---- CODE -----
set chemin to path to me
display dialog chemin as string

set cheminUNIX to POSIX path of chemin
display dialog cheminUNIX as string

set commande to "cd " & cheminUNIX
do shell script commande
do shell script "ls"
display dialog the result
---- CODE -----

Pb, on voit dans au deuxième affichage que le chemin d'accès comporte
le nom du script.
Exemple : s'il s'agit du script test présent sur le bureau, cheminUNIX
contient "/Users/Myself/Desktop/test.app"
Lorsque j'essaie d'y accèder par un cd, il me sort donc une erreur...
:-(
Y-a-til une façon élegante d'obtenir le repertoire du script ou
faut-il bidouiller la variable cheminUNIX pour virer le "/test.app"
final ???


tu vas te prendre la tete, mais si tu veux persister dans cette voie tu
peux tenter ta chance avec ca :

do shell script "cd `dirname " & cheminUnix & "`"

ca déconnera probablement avec les espaces, les accents, ...

patpro

Avatar
Paul Gaborit
À (at) 22 Sep 2005 07:03:18 -0700,
"Patty" écrivait (wrote):
Pour ce faire, j'ouvre une fenêtre terminal, me rend dans le
repertoire où se trouvent ces deux pdf (à coup de cd assez
rébarbatifs) puis je lance la commande : gs -sDEVICE=pdfwrite
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=Final.pdf texte1.pdf texte2.pdf

C'est un peu longuet ! ;-)
J'aimerais faire un script macos qui automatise cette tâche...
Pour simplifier, je comptais placer ce script dans le répertoire par
défaut et lorsque je le lance, il automatiserait cette tâche...


Si le chemin complet du répertoire voulu ne contient pas de caractères
exotiques, vous pouvez tout simplement placer votre commande 'gs ...'
dans un fichier texte appellé "concat.command" et placé dans ce fameux
répertoire. Vous lui donnez les droits d'exéctution :

chmod a+x concat.command

Ensuite, à chaque fois que vous en aurez besoin, il vous suffirat de
double-cliquer dessus depuis le Finder pour que ce script s'exécute.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
Patty
Pfff je jette l'éponge...
Après avoir laborieusement trouvé le répertoire d'accés où se
trouvaient les deux pdf en question (avec changement de nom d'un
repertoire qui contenait un espace, mais ça n'est pas très génant),
j'arrive enfin à faire un "cd cheminUNIX" qui marche !

Malheureusement, première embrouille, les commandes do shell script ne
sont pas liées entre elles. SI je lance un nouveau "do shell script",
les changements de répertoire effectués précedement seront perdus...
Après une recherche sur internet, je vois qu'il faut placer toutes les
instructions au sein d'un même "do shell script", séparées par des "
; ".

Je refais un test, ça semble passer... Je vais enfin pouvoir
copier/coller mon infâme commande !
Je clique sur compiler, aucune erreur ! j'exulte !

Je lance l'application, et là, désenchentement total, un message
d'erreur affiche un sinistre : "gs - command not found"...

Après une recherhce sur le site d'apple, je m'aperçois que
applescript utilise par défaut le shell sh alors que celui que
j'utilise est stocké dans "/usr/bin/login" apparemment... :-(

Dans une ultime tentative désespérée, je rajoute un "/usr/bin/login"
au debut de mon "do shell script"... Rien ne se passe... En lançant
"/usr/bin/login" dnas une fenêtre terminal, je m'aperçois alors avec
horreur que le shell me demande mon login et mon mot de passe de
session ! J'essaie de faire comprendre en vain à applescript de les
rajouter à la suite, sans succès (le "do shell script
"/usr/bin/login; mon_login; mon_mdp" ne marche pas...).

Je prends alors pleinement conscience de la mise en garde de patpro...
Effectivement c'est prise de tête... Je crois que je vais prendre une
bonne aspirine et passer à autre chose ;-)
En tout cas ça m'a permis une légère introduction à applescript...

Par curiosité, si quelqu'un sait comment contourner cette ultime
difficulté, soufflez moi la réponse, j'aime pas laisser qqch en
suspens comme ça ;-)


Quoiqu'il en soit, merci à vous tous/toutes pour vos contributions ;-)


Patty
Avatar
Paul Gaborit
À (at) 22 Sep 2005 09:19:20 -0700,
"Patty" écrivait (wrote):
Par curiosité, si quelqu'un sait comment contourner cette ultime
difficulté, soufflez moi la réponse, j'aime pas laisser qqch en
suspens comme ça ;-)


Pour AppleScript, je ne sais pas... mais utilisez un AppleScript pour
ne faire que des commandes Unix me semble inutile. Utilisez donc la
méthode du script Unix avec l'extension ".command". Ça marche bien.

Et pour simplifier, placez-y toutes les commandes pour qu'il marche
partout :

cd /le/chemin/tel/que/vous/le/faites/a/la/main
gs ....

Et voili...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
Patty
Arf j'ai essayé de créér le script en question mais je n'y suis pas
arrivé... Je dois vraiment être anti-doué... :-(

J'ai ouvert un fichier texte dans lequel g tapé

--------------------------
cd <mon_chemin>
gs <bidule_chouette>
--------------------------

TextEdit veut absolument rajouter .rtf a mon fichier... Qu'à cela ne
tienne, je l'enlève manuelle et OSX reconnait bien mon fichier comme
un script terminal... Mais bug lorsque je double-clic dessus ou que je
le lance depuis une fenetre terminal (erreur : command bash not found).

J'ai rajouté le #!/bin/bash de patpro (je suppose que c'est pr forcer
l'utilisation d'un shell donné) et g même lancé un chmod dessus
(trouvé ds l'aide apple, utile ou pas ?).

Après une aprem à plancher sur l'apple script, j'avoue ne pas avoir
toutes les neurones en face des synapses ;-)

Une suggestion (pour le script, pas pour les neurones) ?


Merci d'avance


Patty
1 2