Script ou Automatisation

Wolf_51

Membre actif
14 Mars 2016
143
8
50
Bonjour j’essaye de créer un script (grâce à l’aide de Chat GPT car je n’y connais rien)
Qui après attribution de raccourci me permettrait de supprimer 2 lignes d’espaces.
Exemple :

NOM CLIENT
ADRESSE
CP VILLE


TEL.
INFO

Deviendrait après exécution du script :

NOM CLIENT
ADRESSE
CP VILLE
TEL.
INFO
Je souhaiterais que le scripte sélectionne tous le texte présent dans le champ réservé à la saisie et y supprime toutes les lignes vierges

Après avoir questionné Chat GPT, celui-ci me propose de créer un script puis avec Automator de l'exécuter via un raccourci :


Nouvelle méthode : Créer un Service avec AppleScript

1️⃣ Ouvrir l’application “Script Editor”
Cmd + Espace, tape Éditeur de script et ouvre-le.

2️⃣ Créer un nouveau script
• Clique sur Fichier > Nouveau.

3️⃣ Copier et coller ce script
Copie-colle ce code dans l’Éditeur de Script :

Bloc de code:
set theText to (the clipboard) 
set newText to do shell script "pbpaste | sed '/^$/N;/^\\n$/D'" 
set the clipboard to newText 
display notification "Lignes vides supprimées !" with title "Action terminée"

4️⃣ Enregistrer comme Service
• Va dans Fichier > Exporter.
Nom du fichier : Supprimer lignes vides.
Format de fichier : Script (et non “Texte” !).
Enregistre-le dans :

Bloc de code:
~/Library/Services/



Ajouter aux Services macOS

1️⃣ Ouvre Automator
Cmd + Espace, tape Automator et ouvre-le.

2️⃣ Créer une nouvelle “Action rapide”
• Clique sur Fichier > Nouveau.
• Sélectionne “Action rapide” et clique sur “Choisir”.

3️⃣ Ajouter une action AppleScript
• Dans la barre de recherche à gauche, tape “Exécuter un script AppleScript”.
• Fais glisser l’action au centre.

4️⃣ Coller ce code dans Automator
Remplace le texte par ce code :

Bloc de code:
on run {input, parameters}
    do shell script "pbpaste | sed '/^$/N;/^\\n$/D' | pbcopy"
    display notification "Lignes vides supprimées !" with title "Action terminée"
end run

5️⃣ Enregistrer et tester
• Va dans Fichier > Enregistrer.
• Nom : “Supprimer lignes vides”.
• Emplacement : ~/Library/Services/.



Activer le raccourci clavier

1️⃣ Ouvre Réglages Système > Clavier > Raccourcis > Services.
2️⃣ Cherche “Supprimer lignes vides” dans “Texte” ou “Général”.
3️⃣ Coche la case et attribue un raccourci (ex. Cmd + Alt + L).



Tester dans TextEdit
Ouvre TextEdit, écris un texte avec des lignes vides.
Sélectionne tout le texte.
Appuie sur ton raccourci (Cmd + Alt + L).
• Un message “Lignes vides supprimées” devrait apparaître.



Si ça ne marche toujours pas :
1. Le service apparaît-il dans “Services” maintenant ?
2. Le raccourci fonctionne-t-il ?
3. As-tu bien enregistré l’AppleScript dans ~/Library/Services/ ?


On ajustera ensemble si besoin. On va y arriver !


-----


J'exécute toutes les étapes avec succès et je retrouve ma commande dans les raccourcis clavier à laquelle j'assigne le raccourci Cmd + Alt + L
Capture d’écran 2025-03-17 à 15.40.04.webp

Lorsque je teste dans "TextEdit", une fois mon texte sélectionné j'applique mon racourci.
je vois que le raccourci se lance (une petite roue apparait dans la barre de tache)
Mais aucune action n'est exécutée sur mon texte, les 2 lignes vides sont toujours la.

Quelqu'un pourrait-il m'aider svp :nerd_face:
 
Dernière édition:
Bonjour,

Pour essayer de te faire un script, il me faudrait plus d'éléments.
Je souhaiterais que le scripte sélectionne tous le texte présent dans le champ réservé à la saisie et y supprime toutes les lignes vierges
Ton texte à traiter se trouve dans un "champ" mais dans quelle application ? (TextEdit, Word, excel , pages, Numbers, autre...)
Dans la fenêtre ouverte de cette application , il n'y a que le texte à traiter ou d'autre champs à ne pas traiter ?

Autrement dit, peut-on faire, dans le menu de l'application, un "tout sélectionner", puis traiter la sélection ?
 
Bonjour,

Mes texte sont utilisé depuis les appli iMessage, WhatsApp, Notes, Pages, Numbers
En fait j'ai créé au fil du temps tout un tas de raccourcis depuis "Remplacement de texte" que j'utilise au quotidien et qui constituent ma liste de clients

Je les utilises
  • dans Numbers et page notamment pour envoyer mes devis et factures
  • mais également dans WhatsApp et iMessage pour envoyer les adresses clients a mes collaborateurs

J'emploie ce codes a longueur de journée (une bonne moyenne de 100 par jour à minima)
Et du coup, je supprime manuellement ces 2 lignes vides quand je m'en sers sur les messageries

Pour répondre à ta question : oui on peut tout sélectionner avant de traiter le scripte
 
Alors désolé, je ne sais pas comment faire.

Je sais faire un script pour traiter:

  • Un fichier texte sur le disque dur.
  • le texte contenu dans le presse papier
  • le texte dans une fenêtre d’une application ouverte.

Mais pas, avec un seul script, dans plusieurs applications, Il faudrait un script par application …


Je vais réfléchir à la question, mais pour le moment je n’ai pas d’idée.
 
Si tu remplaces, dans la base des "remplacements de texte", toutes les valeurs (adresse) des clients par les mêmes sans les lignes vides, est ce que cela te gênes (est-ce que dans d'autre cas tu as besoin de ces lignes vide) ou peuvent elles être supprimées définitivement ?

Si tu peux les supprimer alors je te donnerais une procédure pour avoir ce résultat.
 
Oui j'ai besoin de ces lignes d'espaces car je les utilise sur mes devis et factures
 
  • J’aime
Réactions: Wolf_51
Oui tout à fait, mais au quotidien ce n'est pas pratique de l'utiliser via une "appli"
J'aurais aimé pourvoir l'utiliser directement depuis la saisie de mon texte
 
Bonjour,

Tu peux aussi créer autant de "remplacement de texte" avec les mêmes clients sans ces 2 lignes en faisant une petite nuance dans le texte à remplacer:
Exemple
Cli1 se remplace avec les valeurs avec les 2 lignes vides
Ccli1 se remplace avec les valeurs sans les 2 lignes vides.

Il suffira de faire un script pour automatiser la création des nouveaux "remplacement"
 
Bonsoir,

Ça veut dire que je dois recréer tous mes codes sans les espaces ?
Le script devrait pouvoir le faire.

Il me faudra juste savoir quelle lettre ajouter devant le code existant pour qu'il crée un nouveau code automatiquement.

Par exemple en ajoutant un "C" devant ton code actuel
si ton code actuel pour saisir le client 'Dupont ....." est : "cli12"
alors pour saisir ce même client "Dupont..." sans les 2 lignes vides tu taperais "Ccli12"

Pour préparer cela il faudra faire quelques manips simples et exécuter un script qui fera le job.

Si cela te convient , tu me donnes la lettre à ajouter devant le code actuel et je te préparerais un script et un tuto pour la mise en place.
 
Bien, va pour "*"
Pour mettre en place:
Aller dans
réglages systèmes… —> Clavier —> Remplacement de texte.

Dans la fenêtre sélectionner toutes les valeurs à modifier. Pour cela :

Touche option + majuscule + clic souris +sur la 1ere valeur à modifier puis clic souris sur la dernière valeurs modifier (toutes les valeurs entre les 2 se sélectionnent), relâcher les touches puis le clic souris…

La touche commande permet de rajouter des valeurs qui ne sont pas à la suite les unes des autres…

Lorsque toutes les valeurs à modifier sont sélectionnées, se positionner sur la sélection et faire un clic droit, un mini menu apparaît (Importer…, Exporter…) choisir Exporter… et choisir un chemin ou enregistrer le fichier qui s’appellera « Substitutions de texte.plist». (Moi je l’ai mis sur le bureau)


Exécuter le script ci-dessous, il te demande de sélectionner le fichier exporté .
Le fichier est modifié avec les nouvelles valeurs

Faire un glisser déposer du fichier modifié sur la fenêtre de Remplacement de texte, ce qui met toutes les valeurs corrigées (sans les lignes vides), mais ne touche pas aux codes existant.

Les nouveaux codes devraient être en place....

EDIT: Si tu veux tu peux tester en ne sélectionnant que 2 ou 3 clients. Par contre après il faudra soit les effacer, soit ne pas les resélectionner pouir ne pas les traiter 2 fois !


Bloc de code:
tell application "Finder"
    set Monfichier to choose file with prompt "Choisissez le fichier Substitutions de texte.plist de l'export"
end tell
open for access Monfichier
set vartoto to read Monfichier -- lit le fichier et le met dans la variable vartoto
close access Monfichier -- ferme le fichier

set vartoto2 to ""
set traite to ""

tell application "Finder"
    set nb to count paragraph of vartoto
    repeat with i from 1 to nb
        set letext to paragraph i of vartoto
        if letext = "        <key>shortcut</key>" then
            set letextM to (paragraph (i + 1)) of vartoto
            set newtext to (text 1 thru 10 of letextM) & "*" & text 11 thru -1 of letextM
            set traite to letextM
            set vartoto2 to vartoto2 & letext & return
            set vartoto2 to vartoto2 & newtext & return
        else
            if letext is not traite and letext is not "" then
                set vartoto2 to vartoto2 & letext & return
            end if
        end if
    end repeat
   
    set lefichier to open for access Monfichier with write permission
    set eof lefichier to 0
    write vartoto2 & return to lefichier starting at eof
    close access lefichier
   
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Dernière édition: