L'exemple de code AppleScript, ci-dessous, a été testé dans Script Editor sous macOS Big Sur avec les paramètres de Langue et région dans Préférences Système réglés sur Anglais (États-Unis) - Principal et a fonctionné pour moi sans problème1.
- 1 Suppose que les réglages nécessaires et appropriés dans <strong>Préférences Système</strong> > <strong>Sécurité et confidentialité</strong> > <strong>Confidentialité</strong> ont été définis/réglés comme nécessaire.
Tout ce que vous devriez avoir besoin de faire est de définir la valeur de targetApp
, au début du script, sur le nom de l'application cible tel qu'il apparaît dans le panneau Notifications dans les Préférences Système.
Tel que codé actuellement, le script bascule le bouton Autoriser les notifications de targetApp
.
Le script peut être utilisé de différentes manières pour le déclencher, en tant qu'application AppleScript, en tant que Service/Action rapide Automator, en tant que script shell en ajoutant un shebang #!/usr/bin/osascript
au début, en le sauvegardant en tant que fichier texte et en le rendant exécutable avec chmod
, ou avec tout utilitaire tiers capable d'exécuter du code AppleScript, etc.
Exemple de code AppleScript:
-- # Définir la valeur de targetApp sur le nom de l'application
-- # cible tel qu'il apparaît dans les Notifications
-- # panneau des Préférences Système.
set targetApp to "Script Editor"
-- # Ne modifiez pas le code ci-dessous sauf si nécessaire.
property |Préférences Système| : nom de ¬
l'application id "com.apple.systempreferences"
-- # Vérifier si les Préférences Système sont
-- # en cours d'exécution et si oui, alors les fermer.
-- #
-- # Ceci est fait pour que le script ne échoue pas
-- # s'il est en cours d'exécution et qu'une feuille modale
-- # est affichée, d'où l'utilisation de 'killall'
-- # car 'quit' échoue quand il le fait, s'il l'est.
-- #
-- # Ceci est également fait pour permettre à
-- # comportements par défaut d'être prévisibles depuis une occurrence propre.
if l'exécution de l'application id "com.apple.systempreferences" then
try
dire à l'application id "com.apple.systempreferences" de quitter
en cas d'erreur
faire script shell "killall '" & |Préférences Système| & "'"
fin essayer
delay 0.1
end if
-- # S'assurer que les Préférences Système ne sont pas en cours d'exécution avant
-- # de les rouvrir. Sinon, il peut y avoir un problème
-- # en essayant de les rouvrir pendant qu'elles se ferment réellement.
répéter tant que l'exécution de ¬
l'application id "com.apple.systempreferences" est vrai
delay 0.1
fin répéter
-- # Ouvrir les Préférences Système dans le panneau Notifications.
dire à l'application id "com.apple.systempreferences"
lancer -- # Utilisé comme solution de contournement à un problème dans Big Sur.
delay 0.1
révéler le panneau id "com.apple.preference.notifications"
end tell
-- # Utiliser Événements Système pour atteindre le but.
dire à l'application id "com.apple.systemevents"
lancer -- # Utilisé comme solution de contournement à un problème dans Big Sur.
delay 0.2
dire fenêtre 1 de processus d'application |Préférences Système|
-- # Attendre que le panneau cible soit disponible.
mon waitForUIelement(ligne -1 de tableau 1 de zone de défilement 1)
-- # Déterminer la ligne cible à sélectionner.
définir ligneCibleApp à la première ligne de tableau 1 de ¬
zone de défilement 1 dont la valeur de texte statique 1 de ¬
groupe 1 de élément IU 1 est targetApp
-- # Sélectionner la ligne cible.
sélectionner ligneCibleApp
-- # Attendre que la case à cocher cible soit disponible.
mon waitForUIelement(bouton 1 de groupe 1)
-- # Cliquer sur Autoriser les notifications.
cliquer bouton 1 de groupe 1
fin dire
end tell
delay 0.02
quitter application id "com.apple.systempreferences"
-- ## Gestionnaire ##
sur waitForUIelement(uiElement)
dire à l'application id "com.apple.systemevents"
dire fenêtre 1 de processus d'application ¬
|Préférences Système|
définir i à 0
répéter jusqu'à ce que existe uiElement
delay 0.1
définir i à i + 1
si i 30 alors retourner
fin répéter
fin dire
fin waitForUIelement
Remarques :
Tel que codé actuellement, le script se contente de basculer le bouton Autoriser les notifications de targetApp
, cependant, le code peut être facilement modifié pour vérifier l'état du bouton cible et agir en conséquence. Par exemple, si on veut juste s'assurer qu'il est désactivé.
Changer :
cliquer bouton 1 de groupe 1
À :
si la valeur de bouton 1 de groupe 1 est "on" alors ¬
cliquer bouton 1 de groupe 1
Pour une utilisation dans macOS Catalina:
Changer :
-- # Déterminer la ligne cible à sélectionner.
définir ligneCibleApp à la première ligne de tableau 1 de ¬
zone de défilement 1 dont la valeur de texte statique 1 de ¬
groupe 1 de élément IU 1 est targetApp
À :
-- # Déterminer la ligne cible à sélectionner.
définir ligneCibleApp à premier élément de (lignes de tableau 1 de ¬
zone de défilement 1 dont la valeur de texte statique 1 de ¬
groupe 1 de élément IU 1 est targetApp)
Note : L'<em>exemple</em> de <strong>code AppleScript</strong> est tel quel et sans aucun <em>gestion des erreurs</em> inclus ne contient pas de gestion des erreurs supplémentaire comme cela pourrait être approprié. Il incombe à l'utilisateur d'ajouter toute <em>gestion des erreurs</em> comme cela pourrait être approprié, nécessaire ou souhaité. Consultez les <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TOCP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>essayer</strong></a> et <em>déclaration d'<a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TOCP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>erreur</strong></a></em> dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du Langage AppleScript</strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TOCP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec les Erreurs</strong></a>. De plus, l'utilisation de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TOCP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>commande de délai</strong></a> peut être nécessaire entre les événements lorsque approprié, par exemple, <code>délai 0,5</code>, avec la <em>valeur</em> du <em>délai</em> définie correctement.