2 votos

¿Ventura, cerrar automáticamente todas las notificaciones de "Propiedad de disco no expulsado"?

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?

0voto

Zitoun Puntos 101

Aquí hay un código que me funciona en MacOS Sonoma (14.2.1):

tell application "System Events" to tell application process "NotificationCenter"
    try
        log (actions of UI elements of UI element 1 of scroll area 1 of group 1 of window "Notification Center" of application process "NotificationCenter" of application "System Events")
        perform (actions of UI elements of UI element 1 of scroll area 1 of group 1 of window "Notification Center" of application process "NotificationCenter" of application "System Events" cuyo nombre empieza con "Name:Close")
    end try
end tell

En lugar de cuyo nombre empieza con "Name:Close" puedes usar cuyo nombre descripción es "Name:Fermer" en francés, o en tu propio idioma. Añadí una línea de registro para que puedas verificar qué acción deseas realizar.

De cualquier manera, esto ha sido un dolor de cabeza durante tanto tiempo, espero que esto ayude.

Verifica esto para la versión Monterey: https://apple.stackexchange.com/a/467607/303345

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X