4 votes

AppleScript: Comment fermer les alertes de notification d'une application spécifique?

En AppleScript, on peut effacer toutes les notifications de toutes les applications, comme ceci :

tell application "System Events"
    tell process "NotificationCenter"
        set numwins to (count windows)
        repeat with i from numwins to 1 by -1
            click button "Close" of window i
        end repeat
    end tell
end tell

(Source)

Est-il possible de supprimer les notifications d'une application spécifique ? Par exemple, le script devrait supprimer les notifications de Calendar.app, mais laisser celles de Google Chrome à l'écran.


Il peut être nécessaire d'expliquer ce que j'entends exactement quand je dis, <em>"effacer."</em> Je n'essaie pas de supprimer des éléments de la liste des notifications trouvée dans le "Centre de notifications" (c'est-à-dire, le volet vertical extensible sur le côté droit de l'écran). Je cherche à automatiser l'action d'appuyer sur les boutons "Fermer" des notifications contextuelles qui se superposent dans le coin supérieur droit de l'écran, de sorte que ces boîtes de dialogue disparaissent de la vue.

Cette question concerne le style de notification "Alerte" de OS X (plutôt que le style "Bannière", qui disparaissent d'eux-mêmes peu de temps après leur apparition).


OS X El Capitan, version 10.11.6.


2voto

user3439894 Points 52496

J'ai testé le exemple AppleScript suivant sous macOS 10.12.5, et il a fermé les messages de Alertes de style Calendrier de Calendrier.

tell application "System Events"
    tell process "NotificationCenter"
        set windowCount to count windows
        repeat with i from windowCount to 1 by -1
            if description of image 2 of window i is "Calendrier" then
                click button "Fermer" of window i
            end if
        end repeat
    end tell
end tell

Remarque : Ceci est un exemple de code AppleScript qui ne contient aucune gestion d'erreur. Ajoutez une gestion d'erreur appropriée selon vos besoins.

0 votes

Je viens de tester le code exemple AppleScript sous OS X 10.11.6, il a fermé les messages de style Alertes du Calendrier tout en laissant ouverts les alertes des autres applications.

1 votes

Malheureusement, cela ne fonctionne plus sous 12.5

0 votes

J'ai remarqué plusieurs variations du nom du processus, Notification Center, NotificationCentre, NotficationCenter, etc . Y a-t-il un moyen de savoir lequel est correct ?

-1voto

mikomiles Points 1

Si vous voulez fermer uniquement des alertes de calendrier spécifiques (peut-être avez-vous utilisé votre calendrier pour planifier l'exécution d'un processus quotidien et cela crée une alerte avec laquelle vous ne voulez pas avoir à traiter), vous pouvez utiliser ce code. Remplacez "Mettez votre texte d'alerte ici" par ce que vous avez utilisé pour le nom particulier de l'événement du calendrier. Il parcourra toutes les notifications et ne fermera que celle que vous avez identifiée si elle existe.

tell application "Préférences Système"
    tell application "Événements Système"
        tell processus "Centre de notifications"
            répéter avec i de 1 à nombre de fenêtres
                if la valeur du texte statique 1 de la zone de défilement de la fenêtre i contient "Mettez votre texte d'alerte ici" then
                    cliquer sur bouton "Fermer" de fenêtre i
                end if
            fin répéter
        end tell
    end tell
end tell

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X