Applescript Rechercher remplacer, Mise à jour lion script ne fonctionne plus |
Bienvenue invité ( Connexion | Inscription )
Applescript Rechercher remplacer, Mise à jour lion script ne fonctionne plus |
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 |
|
|
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 |
|
|
21 Jul 2011, 13:17
Message
#3
|
|
Nouveau Membre Groupe : Membres Messages : 10 Inscrit : 26 Oct 2004 Membre no 25 845 |
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)
|
|
|
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 Yvan KOENIG (VALLAURIS, France) vendredi 22 juillet 2011 12:46:53 |
|
|
Guest_EricaL**_* |
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. |
|
|
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 |
|
|
11 Feb 2012, 11:59
Message
#7
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 098 Inscrit : 4 Oct 2005 Membre no 47 253 |
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 |
|
|
11 Feb 2012, 19:16
Message
#8
|
|
Adepte de Macbidouille Groupe : Membres Messages : 82 Inscrit : 5 Oct 2004 Membre no 24 742 |
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) |
|
|
11 Feb 2012, 20:39
Message
#9
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 098 Inscrit : 4 Oct 2005 Membre no 47 253 |
-------------------- 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 |
|
|
Nous sommes le : 25th April 2024 - 14:54 |