IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Applescript Rechercher remplacer, Mise à jour lion script ne fonctionne plus
Options
Zef29
posté 21 Jul 2011, 10:26
Message #1


Nouveau Membre


Groupe : Membres
Messages : 10
Inscrit : 26 Oct 2004
Membre no 25 845



Bonjour,

Comme d'habitude lors q'une mise à jour système, les petits tracas apparaissent.
En ce qui me concerne, j'utilise régulièrement un script applescript afin de formater correctement un texte avant l'envoi vers un site ftp.
Malheureusement le fonctionnement de textedit dans lion à quelque peu changé et mon script ne fonctionne plus, j'ai trouvé ça sur le net mais ça ne fonctionne pas d'avantage :
tell application "TextEdit"
activate
tell application "TextEdit" to open file ((path to desktop) & newAdds as Unicode text)

tell application "System Events"
tell process "TextEdit"
keystroke "f" using {command down}
keystroke "."
keystroke tab
keystroke ""

tell window "Find"
click button "Replace All"

tell window "Find"
keystroke "w" using {command down}

tell application "System Events"
tell process "TextEdit"
keystroke "a" using {command down}

end tell
end tell
end tell
end tell
end tell
end tell
end tell

Je vous remercie d'avance pour votre aide.

Cordialement
Go to the top of the page
 
+Quote Post
KOENIG Yvan
posté 21 Jul 2011, 10:35
Message #2


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 989
Inscrit : 22 Aug 2002
Lieu : 06220 VALLAURIS
Membre no 3 217



Apparemment, vous avez récupéré un script incomplet.

Il manque au moins l'instruction définissant newAdds

En outre, une instruction est incorrecte.

tell application "TextEdit" to open file ((path to desktop) & newAdds as Unicode text)

devrait être

tell application "TextEdit" to open file ("" & (path to desktop) & newAdds as Unicode text)
ou
tell application "TextEdit" to open file (((path to desktop) as text) & newAdds as Unicode text)

Yvan KOENIG (VALLAURIS, France) jeudi 21 juillet 2011 11:39:25
Go to the top of the page
 
+Quote Post
Zef29
posté 21 Jul 2011, 13:17
Message #3


Nouveau Membre


Groupe : Membres
Messages : 10
Inscrit : 26 Oct 2004
Membre no 25 845



Citation (KOENIG Yvan @ 21 Jul 2011, 11:35) *
Apparemment, vous avez récupéré un script incomplet.

Il manque au moins l'instruction définissant newAdds

Yvan KOENIG (VALLAURIS, France) jeudi 21 juillet 2011 11:39:25


Oui, pour commencer merci pour votre réponse rapide.

J'ai fait un copier coller un peu hâtivement pour montrer l'exemple.
La partie du script plus particulièrement concernée est celle-ci :
Citation
tell application "TextEdit"
tell application "System Events"
tell process "TextEdit"
keystroke "f" using {command down}
keystroke "."
keystroke tab
keystroke ""
tell window "Find"
click button "Replace All"


Le problème se situe plutôt dans le nouveau comportement de TextEdit au sein de Lion que dans le script lui-même. Il n'y a plus à proprement parlé de fenêtre de recherche distincte mais une intégration du mode rechercher-remplacer dans la fenêtre elle même.
Je vous joint une copie d'écran.

Désolé pour la mauvaise piste sur laquelle je vous ai envoyé.

Cordialement
Fichier(s) joint(s)
Fichier joint  Test.jpg ( 26.39 Ko ) Nombre de téléchargements : 12
 
Go to the top of the page
 
+Quote Post
KOENIG Yvan
posté 22 Jul 2011, 11:43
Message #4


Macbidouilleur de vermeil !
****

Groupe : Membres
Messages : 989
Inscrit : 22 Aug 2002
Lieu : 06220 VALLAURIS
Membre no 3 217



Bonjour

J'ai répondu parce que j'avais repéré des anomalies.

En ce qui concerne le comportement sous Lion, je ne peux vous aider car je n'ai pas encore acquis ce système. Je préfère attendre la première mise à jour wink.gif

Yvan KOENIG (VALLAURIS, France) vendredi 22 juillet 2011 12:46:53
Go to the top of the page
 
+Quote Post
Guest_EricaL**_*
posté 22 Jul 2011, 13:37
Message #5





Guests






Bonjour,

Le mieux est toujours de montrer ton script plutôt qu'un autre script qui ne fonctionne pas, parce que les noms des boutons et de la fenêtre sont en Anglais (button "Replace All", window "Find"), donc c'est sur que ça ne fonctionnera jamais sur un système en français.

J'imagine que le raccourci-clavier commande + f sélectionne le champ de recherche et que le tab sélectionne le champ de remplacement, sinon il faut détailler ce qui fonctionne et ce qui ne fonctionne plus.

Je n'ai pas Lion,donc je ne peux pas corriger le script, mais c'est possible par toi-même avec cette méthode :

Pour que le script fonctionne, il faut cocher la case "Activer l'accès pour les périphériques d'aide" des préférences "Accés universel" dans les "Préférences Système...".

Donc, voici le script de base écrit plus proprement, car des tell application "System Events" dans un bloc tell application "TextEdit"
et un tell application "System Events" dans un bloc tell application "System Events" n'est pas recommandé.
Code
set tfile to (path to desktop as text) & "nom du fichier"
tell application "TextEdit"
    activate
    open tfile
end tell
my searchAndReplace(".", "") -- supprime les points
my searchAndReplace("aaaaa", "bbbbb") -- remplace aaaaa par  bbbbb


on searchAndReplace(toSearch, toReplace)
    tell application "System Events" to tell process "TextEdit"
        keystroke "f" using command down
        keystroke toSearch
        keystroke tab
        if toReplace is not "" then -- pour remplacer le texte
            keystroke toReplace
        else -- pour supprimer le texte de remplacement, le champ doit être vide
            keystroke "x" using command down
        end if
        click  of window 1
        keystroke "a" using command down
    end tell
end searchAndReplace


Voici un script qui recherche des ui éléments dans la première fenêtre dont le nom est "Tous".
Code
set leNom to "Tous"
set uiElements to {}
tell application "System Events" to tell window 1 of process "TextEdit"
    set Mainlist to (get entire contents)
    repeat with i in Mainlist
        try
            if name of i is leNom then set end of uiElements to contents of i
        end try
    end repeat
end tell
uiElements


Après, dans la partie "Résultat" de l'éditeur AppleScript, il suffit de copier le premier élément de la liste, mais pas of window "xxxxx" of application process "TextEdit" of application "System Events"

Colle-le après le mot "click " dans l'autre script

j'imagine qu'il trouvera qu'un seul élément, s'il y en a plusieurs éléments, il faut tester chaque élément un par un pour savoir lequel est le bon.

Ce message a été modifié par EricaL** - 22 Jul 2011, 13:40.
Go to the top of the page
 
+Quote Post
Racky
posté 10 Feb 2012, 23:44
Message #6


Adepte de Macbidouille
*

Groupe : Membres
Messages : 82
Inscrit : 5 Oct 2004
Membre no 24 742



Bonjour,

Je viens sur cet ancien post car j'essaie de l'utiliser dans le cadre d'une recherche-remplacement de chaîne au sein d'un fichier texte.

Mon but par exemple ici : Changer Ancien par Nouveau dans un fichier Essai.

Le script ci-dessous fonctionne parfaitement, mais après fermeture de la fenêtre de recherche lorsque je ferme le fichier, il apparaît la boîte de dialogue classique proposant Ne pas enregistrer - Annuler - Enregistrer.

Comment faire pour cliquer sur Enregistrer (par AS bien sûr) afin de sauvegarder le résultat?

Autre question : Dans la ligne click button 4 of window 1 comment trouver sans tâtonner que c'est le bouton 4 qui correspond au bouton Suivant?

Merci

set monFichier to (path to desktop as text) & "Essai.txt"

tell application "TextEdit"
activate
open monFichier
end tell

my searchAndReplace("Ancien", "Nouveau")

on searchAndReplace(toSearch, toReplace)

tell application "System Events" to tell process "TextEdit"
keystroke "f" using command down
keystroke toSearch
keystroke tab
if toReplace is not "" then
keystroke toReplace
else
keystroke "x" using command down
end if
click button 4 of window 1 -- Clic sur le bouton 4 (Suivant) de la fenêtre Recherche
click button 5 of window 1 -- Clic sur le bouton 5 (Remplacer) de la fenêtre Recherche
keystroke "w" using command down -- Ferme la fenêtre de recherche
keystroke "w" using command down -- Amène la boîte de dialogue d'enregistrement
-- Quoi mettre ici pour enregistrer le fichier en le fermant?
end tell

end searchAndReplace

Go to the top of the page
 
+Quote Post
sucellus
posté 11 Feb 2012, 11:59
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (Racky @ 10 Feb 2012, 23:44) *
Mon but par exemple ici : Changer Ancien par Nouveau dans un fichier Essai.

Bonjour

C'est une obligation de passer par TextEdit pour faire la modification?

Dans un fichier texte, il est facile de changer un mot (où groupe de mots) sans avoir le fichier visible sur l'écran.

En plus c'est très rapide.

Quand je me déciderais à acheter Lion, je testerais si ça marche avec ce fauve.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
Racky
posté 11 Feb 2012, 19:16
Message #8


Adepte de Macbidouille
*

Groupe : Membres
Messages : 82
Inscrit : 5 Oct 2004
Membre no 24 742



Citation (sucellus @ 11 Feb 2012, 11:59) *
Citation (Racky @ 10 Feb 2012, 23:44) *
Mon but par exemple ici : Changer Ancien par Nouveau dans un fichier Essai.

Bonjour

C'est une obligation de passer par TextEdit pour faire la modification?

Dans un fichier texte, il est facile de changer un mot (où groupe de mots) sans avoir le fichier visible sur l'écran.

En plus c'est très rapide.

Quand je me déciderais à acheter Lion, je testerais si ça marche avec ce fauve.

@+


Bonjour,

Non le passage par TexEdit n'est pas une obligation.

J'ai essayé un script du genre ci-dessous, mais les mots se "chevauchent" et je suis obligé de repérer leurs positions avant.

Je suis preneur de ta solution "Dans un fichier texte, il est facile de changer un mot (où groupe de mots) sans avoir le fichier visible sur l'écran"

Pour info, moi je suis toujours sous SnowLeopard.

@+


set chemin_Maison to (path to home folder) as string

open for access file (chemin_Maison & "Desktop:monFichierEssai" as string) with write permission

set changement to "nouveau"

write changement to file "chemin_Maison & "Desktop:monFichierEssai" starting at xxxxx

close access file (chemin_Maison & "Desktop:monFichierEssai" as string)


Go to the top of the page
 
+Quote Post
sucellus
posté 11 Feb 2012, 20:39
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (Racky @ 11 Feb 2012, 19:16) *

Bonsoir

Un MP en route pour contrôle.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th April 2024 - 14:54