El siguiente código AppleScript debería funcionar si lo guardas como una aplicación "stay open". Sólo hay que establecer los valores de las propiedades para scriptToRun
y lookForThisText
y debería ser bueno para ir.
No olvides conceder permisos en las Preferencias del Sistema para que tu nueva aplicación de permanencia abierta controle tu ordenador
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
Aquí hay una animación rápida que muestra el proceso en acción. He creado una aplicación AppleScript llamada Test Notification.app cuyo único propósito es mostrar una notificación display notification "Blah" with title "BLAH BLAH" subtitle "DUH”
Luego, usando el código que utilicé como respuesta a este post, creé una "Aplicación Stay Open", cuyo único propósito es monitorear todas las ventanas de notificación entrantes para el texto que defino en la variable lookForThisText
. Una vez identificado el texto, desencadena otro script "Merge Every Finder Window.scpt" que como su nombre indica fusiona todas las ventanas del Finder.