Exécution de SCRIPTS par un ”Raccourci”

Je fais des AppleScipts depuis plus de 20 ans. Avec Catalina, je pense, le problème suivant est apparu.

Voici un AppleScript simple simple:

tell application "Music"

activate

tell application "System Events"

keystroke "a" using command down

end tell

end tell

Si j’exécute le Script ”manuellement (⌘R), tous les titres de la playlist sont SÉLECTIONNÉS. Mais si je crée un ”Raccourci” et que j’exécute le Script par le ”Raccourci”, alors RIEN !!!

Pourquoi, comment remédier à ce problème aux conséquences nombreuses et importantes?

Merci.

Mac mini, macOS 14.0

Publiée le 11 oct. 2023 à 03h06

Répondre
Question marquée comme Réponse la mieux classée

Publiée le 11 oct. 2023 à 06h48

Bonjour Claud_Quebec,


Je me demande s’il n’y a pas une interaction entre le raccourci clavier que vous utilisez et la fait que vous utilisez un raccourci clavier dans le script.


Essayez d’ajouter un délai au début de votre script pour que le script ne s’exécute pas immédiatement lorsque vous appuyez sur les touches de votre raccourci clavier et que vous ayez le temps de relâcher ces touches. Par exemple, la commande suivante introduit un délai de 1 seconde :

delay 1
11 réponses
Question marquée comme Réponse la mieux classée

Le 11 oct. 2023 à 06h48 en réponse à Claud_Quebec

Bonjour Claud_Quebec,


Je me demande s’il n’y a pas une interaction entre le raccourci clavier que vous utilisez et la fait que vous utilisez un raccourci clavier dans le script.


Essayez d’ajouter un délai au début de votre script pour que le script ne s’exécute pas immédiatement lorsque vous appuyez sur les touches de votre raccourci clavier et que vous ayez le temps de relâcher ces touches. Par exemple, la commande suivante introduit un délai de 1 seconde :

delay 1

Le 12 oct. 2023 à 09h22 en réponse à Claud_Quebec

Bonjour Claud_Quebec,


Si votre playlist est déjà sélectionnée lorsque vous invoquez le script avec un raccourci clavier, vous n'avez pas besoin de sélectionner les titres. Un script tel que celui-ci serait suffisant pour analyser les titres :


tell application "Music"
	
	set playlistTracks to tracks of (view of front window)
	
	repeat with thisTrack in playlistTracks
		-- process track
	end repeat
	
end tell

Le 11 oct. 2023 à 22h24 en réponse à Nanou55

Bonjour Nanou55,

En fait j'ai résolu le problème, d'une façon pas très élégante, mais qui fonctionne, sauf avec RACCOURCI.

D'abord, je précise que je travaille en AppleScript, avec des raccourcis que je définis dans "Réglages système/Clavier/Raccourcis clavier…/Raccourcis de l'app/Music" dans ce cas-ci. Voici mon petit Script…et le problème majeur que je rencontre en utilisant un raccourci! Précision: AUCUN titre de la playlist n'est "sélectionné", avant d'exécuter le Script.

tell application "Music"

activate

delay 0.3

copy name of view of window 1 to NomPlaylist

play track 1 of playlist NomPlaylist

delay 0.3

tell application "System Events"

keystroke "a" using command down

delay 0.3

end tell

stop

delay 0.3


set LaSel to selection

set NoLaSel to the count of LaSel

delay 0.3

display dialog "—NoLaSel = " & NoLaSel buttons {"OK", "Annuler"} default button "OK"

delay 0.3

end tell


1—Si j'exécute "manuellement" le Script (⌘R), "NoLaSel" = NOMBRE de TOUS les titres SÉLECTIONNÉS.

2—Si j'exécute le Script avec un raccourci (⌘⌥⎈⇧0, par exemple), "NoLaSel" = 0 & AUCUN titre sélectionné.

3—Si j'enlève le "dialog", et exécute le Script avec raccourci, "NoLaSel" = NOMBRE de TOUS les titres SÉLECTIONNÉS.

CONCLUSION: mon Script est INUTILISABLE avec un raccourci. Je note encore que l'utilisation de "System Events" est très restreinte depuis les 3-4 dernier MacOS. POURQUOI? Est-ce que APPLE veut "TUER" le genre d'utilisation que le "petit scripteur" que je suis fais des AppleScripts? Si quelqu'un a la solution, il me permettra d'utiliser au moins une dizaine de mes Scripts, sans être obligé d'utiliser "BetterTouchTool" pour les exécuter avec raccourci.

MERCI.


Le 12 oct. 2023 à 00h55 en réponse à Claud_Quebec

J'ajoute cette information. Si, dans mon Script, je remplace

tell application "System Events"

keystroke "a" using command down

delay 0.3

end tell


PAR


tell application "System Events"

tell process "Music"

set frontmost to true

click menu item "Tout sélectionner" of menu "Édition" of menu bar 1

end tell

delay 0.3

end tell


et que j'utilise mon raccourci, je reçois la fenêtre d'erreur suivante:

"Il est impossible d’obtenir «class mbar» 1 of «class prcs» "Music" of application "System Events". Index non valable."


C'est au delà de mes compétences…Mais je prendrais si ça fonctionnait !

Le 12 oct. 2023 à 02h39 en réponse à Nanou55

Quelques mots sur moi! Je suis un jeune retraité de 83 ans, ex professeur de physique au Québec, je considère que j'ai une vie professionnelle enrichissante et utile, et qui vit en Thaïlande depuis plus de 20 ans (ceci explique pourquoi je ne suis pas couché, 5 de plus que la France). Grand amateur de musique depuis toujours, j'ai une collection de ≈1 millions de titres, j'ai commencé à faire des scripts, il y a plus de 30 ans, pour utiliser avec iTunes et Musique, mais pas que. Je n'ai aucune formation académique sur AppleScript sauf celle que j'ai acquise "sur le tas". J'ai développé toute une série de cotes, très personnelles, inscrites dans le TAG "Genre" de "Musique", pour CLASSIFIER la musique, ce qui est présomptueux pour quelqu'un qui n'a aucune formation musicale, mais ceci me permet de faire des "playlists" automatiques, et de "qualité" je l'assure, avec des scripts. Le GROS script qui me permet de "créer" une playlist (20/30/40… titres selon) dont chaque titre respecte les/mes critères que j'ai choisis préalablement, fait ±60 pages d'instructions et de notes dans "Éditeur de scripts". J'arrête là!


Le petit bout de script que j'ai envoyé doit me permettre de SÉLECTIONNER la playlist initiale (500/1000/1500 titres): dans un premier temps pour analyser le/mon genre de chaque titre (repeat with…) et ouvrir une fenêtre contenant les informations amassées qui me permettront de faire un choix de titres et "créer" la playlist. Tout mon script fonctionne parfaitement avec un raccourci, sauf le "petit bout" du début, que j'ai soumis à votre attention: ce problème est apparu avec Catalina, je pense. j'ai des pensées plutôt "mauvaises" pour ceux/celles qui ont fait ce changement intollérable dans AppleScript. Or, ce problème m'oblige à utiliser "BetterTouchTool" et l'inconvénient avec "BetterTouchTool": une lenteur à exécuter les commandes par boutons dans les fenêtres.


Un dernier mot. Malheureusement tout ce travail, mais j'y trouve mon plaisir, personne ne m'oblige!, n'est utile qu'à moi et à quelques amis à qui je donne des playlists, disons bien uniformisées.

Le 12 oct. 2023 à 22h00 en réponse à 6x6

Bon matin Nanou55


Si ce n’était que ce ”tout début”, je sélectionnerais moi-même la playlist et utiliserais le script que vous soumettez ou encore une des nombreuses formulations analogues. J’ai peut-être été mal adroit en soumettant mon bout de script et par là mal compris. J’arrive à la vraie question, celle qui me met en rage contre les ”experts” d’Apple qui l’ont éludée, ou pire qui ne l’ont pas vue!

La question, la VOICI! Je rappelle que depuis 3-4+ MacOS, il n’est plus possible de faire appel à l’application ”System Events” dans un SCRIPT, si on exécute ce SCRIPT grâce à un RACCOURCI, ce qui est l’intérêt même d’AppleScript pour un quidam comme moi. J’ai fouillé le Net, essayé toute sortes de lignes d’instruction: Niet !


Donc, en simple, existe-t-il une façon d’utiliser ”System Events” dans un script EXÉCUTÉ avec un RACCOURCI deféni dans ”Réglages système” d’Apple??? Sinon, est-ce que quelqu’un quelque part, qui aurait l’oreille d’Apple, pourrait informer Apple de la situation, est-ce que quelqu’un pourrait me suggérer comment procéder pour me faire entendre d’Apple (et non ”tabletté”, c’est GROS Apple!).


Pour montrer l’importance de l’application ”System Events”, une recherche dans mon GROS SCRIPT indique que je fais appel à l’application ”System Events” 46 fois: et mon SCRIPT s’exécute parfaitement, manuellement (⌘R) ou avec un raccourci défini dans l’application ”BetterTouchTool”.


MERCI.

Cette discussion a été fermée par le système ou l’équipe de la communauté. Vous pouvez voter pour les publications que vous jugez utiles ou effectuer des recherches dans la communauté pour trouver des réponses supplémentaires.

Exécution de SCRIPTS par un ”Raccourci”

Bienvenue dans la Communauté d’assistance Apple
Un forum où les clients Apple s’entraident avec leurs produits. Faites vos premiers pas avec votre compte Apple.