0 votes

AppleScript lit et déclenche d'autres script en fonction de la notification reçue.

Existe-t-il un moyen de lire les notifications de MacOS Catalina à partir d'AppleScript ?

Il semble qu'ils ne soient plus stockés dans ~/Bibliothèque/Application Support/ , je ne suis même pas sûr du nom du processus, "Notification Center" semble avoir échoué.

Je voudrais exécuter un AppleScript qui peut détecter et lire une nouvelle notification puis déclencher d'autres script en fonction de la notification.

1voto

wch1zpink Points 6067

Le code AppleScript suivant devrait fonctionner si vous l'enregistrez comme une application "stay open". Définissez simplement les valeurs des propriétés suivantes scriptToRun et lookForThisText et il devrait être prêt à partir.

N'oubliez pas d'accorder des autorisations dans les préférences système pour que votre nouvelle application "rester ouvert" puisse contrôler votre ordinateur.

property scriptToRun : (path to desktop as text) & "your.scpt" -- your path to .scpt file
property lookForThisText : "Search For This Text In Notification Windows" -- your search term
property theseTitles : {}

on idle
    getNotificationTitles()
    delay 0.1
    if theseTitles contains lookForThisText then
        ---------------------------------------------------------------
        delay 6 -- Gives Banner Time To Self Close
        --tell current application to beep 5 -- Just For Testing
        run script alias scriptToRun
        ---------------------------------------------------------------
    end if
    return 1 -- in seconds
end idle

on quit
    --  Executed when the script quits
    continue quit -- allows the script to quit
end quit

on getNotificationTitles()
    -- This Gets The Titles Of The Currently Displaying Notification Alerts And Banners
    tell application id "com.apple.SystemEvents"
        tell (the first process whose bundle identifier = "com.apple.notificationcenterui")
            set theseWindows to every window whose subrole is ¬
                "AXNotificationCenterAlert" or subrole is "AXNotificationCenterBanner"
            set theseTitles to {}
            repeat with thisWindow in theseWindows
                set titleText to the value of static text 1 of thisWindow
                set the end of theseTitles to titleText
                set subTitleText to the value of static text 1 of scroll area 1 of thisWindow
                set the end of theseTitles to subTitleText
                set notificationText to the value of static text 2 of scroll area 1 of thisWindow
                set the end of theseTitles to notificationText
            end repeat
        end tell
    end tell
end getNotificationTitles

Voici une animation rapide montrant le processus en action. J'ai créé une application AppleScript nommée Test Notification.app dont le seul but est d'afficher une notification display notification "Blah" with title "BLAH BLAH" subtitle "DUH” Ensuite, à l'aide du code que j'ai utilisé comme réponse à ce post, j'ai créé une "application Stay Open", dont le seul but est de surveiller toutes les fenêtres de notification entrantes pour le texte que je définis dans la variable lookForThisText . Une fois le texte identifié, il déclenche un autre script "Merge Every Finder Window.scpt" qui comme son nom l'indique fusionne toutes les fenêtres du Finder.

enter image description here

enter image description here

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