En macOS 12.x estaba usando un script para cerrar automáticamente un gran número de notificaciones de Disco No Expulsado Correctamente
que aparecen a la mañana siguiente si dejo accidentalmente mi computadora encendida con uno o más discos externos conectados.
Cuando la computadora se va a dormir, sospecho que debe estar yendo a dormir y despertándose repetidamente, porque puedo terminar con más de 50 notificaciones para el/los disco(s).
Obtuve el script de aquí.
Veo que ha sido actualizado (en marzo de 2023) para funcionar en Ventura, sin embargo, no está funcionando en 13.2.1.
El script es:
tell application "System Events" to tell process "Notification Center"
repeat with notificationWindow in windows
tell notificationWindow
set entireContents to entire contents
repeat with content in reverse of entireContents -- iterar hacia atrás para cerrar primero las notificaciones de abajo, si eso importa
if class of content is group then
set groupStaticTexts to static texts of content
repeat with staticText in groupStaticTexts
set foundText to false
if value of staticText is equal to "Disco No Expulsado Correctamente" then
set foundText to true
exit repeat
end if -- texto es el texto que queremos encontrar
end repeat -- staticTexts in group
if foundText then
-- Nos gustaría buscar botones en el grupo llamado "Cerrar", pero las versiones recientes de macOS ocultan el botón Cerrar hasta que se pasa el cursor sobre la notificación, y aparentemente no hay forma de pasar el cursor en AppleScript. En su lugar, inspeccionamos las acciones del grupo y buscamos la que se llama "Cerrar".
-- truco de acciones a través de https://github.com/Ptujec/LaunchBar/blob/master/Notifications/Dismiss%20all%20notifications.lbaction/Contents/Scripts/default.applescript vía https://www.reddit.com/r/applescript/comments/ycilyr/comment/iu5m3q5/?utm_source=reddit&utm_medium=web2x&context=3
repeat with groupAction in actions of content
if description of groupAction is equal to "Cerrar" then
perform groupAction
exit repeat
end if
end repeat
end if
end if -- if class of content is group
end repeat -- entire contents of window
end tell -- notificationWindow
end repeat
end tell
Devuelve el error:
System Events obtuvo un error: No se puede obtener el texto estático "Expulsar “AUDIO-VIDEO” antes de desconectarlo o apagarlo." del grupo 35 del elemento de la interfaz de usuario 1 del área de desplazamiento 1 del grupo 1 de la ventana "Centro de Notificaciones" del proceso de la aplicación "Centro de Notificaciones".
Para mí esto sugiere que está obteniendo el texto del mensaje de la notificación, no solo el título. Aunque ha logrado identificar la notificación (presumiblemente a través del título "Disco No Expulsado Correctamente") y aún así por alguna razón "obtiene el texto estático" (no estoy seguro de lo que significa eso).
¿Puedes sugerir cómo arreglar el script?