0 votos

Apple script no se ejecuta como se esperaba

Lo siguiente es un applescript que pretende tomar el cuerpo del último correo electrónico y extraer el texto del mismo. Como puedes ver el resultado se muestra a continuación. Este resultado se muestra como el script se ejecutaba correctamente antes. Ahora no lo está.

The following is an applescript which is meant to take the body of the latest email and extract text out of it. As you can see the result is shown below. This result is show as the script was running correctly before. Now it is not.

El correo electrónico que envié después contenía el mensaje "#tech sxi" pero el script no muestra la salida correcta para este correo electrónico. Este no es el único. Cada vez que envío un nuevo correo y ejecuto de nuevo el script, obtengo el mismo problema, el resultado no cambia.

1voto

user49840 Puntos 36

Como ha aludido uno de los comentaristas, "obtener el primer mensaje de la bandeja de entrada" probablemente no te devolverá lo que esperas.

Cuando se recuperan los mensajes mediante AppleScript, Mail ordena las cuentas de correo alfabéticamente . Dentro de la bandeja de entrada de cada cuenta, los mensajes se ordenan primero como los más nuevos. Lo que hayas seleccionado en Mail no cambia el orden en que se devuelven a AppleScript.

Así que si tienes las siguientes cuentas y mensajes en la bandeja de entrada que aparecen en Mail en este orden:

  • Mi iCloud
    • Mensaje del 1/5/16
    • Mensaje del 1/10/16
  • Mi Gmail
    • Mensaje del 1/10/16
    • Mensaje del 1/5/16

"obtener el primer mensaje de la bandeja de entrada" devolverá el mensaje con fecha 1/5/16 de la cuenta "Mi Gmail" (la G va antes de la i, el 1/5/16 va antes del 1/10/16).

Supongo que tienes más de una cuenta en Mail.

  • Nombra el buzón específico. Esto siempre establecerá elMensaje como el mensaje más reciente en "Mi Gmail". (El nombre de la cuenta es el mismo nombre que ves en Mail en la lista bajo Inbox).

    set theMessage to first message in mailbox "INBOX" of account "My Gmail"

Sin embargo, este es un enfoque inusual, ya que el correo se mueve, por lo que el primer mensaje en su buzón podría convertirse en su segundo mensaje de forma inesperada.

He aquí un par de formas fiables de extraer datos de los mensajes:

  • Utilice mensajes seleccionados (mensajes que has seleccionado haciendo clic en ellos en Mail):

    tell application "Mail"
        set theMessages to selection
    
        -- This block extracts the topics from the messages
        repeat with theMessage in theMessages
            set theMessageText to content of theMessage
            try
                -- Set topic to the string starting just after the hash
                set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                -- Truncate the topic at the first space
                set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
            on error
                -- No topic found in message
                set topic to ""
            end try
            log topic
    
        end repeat
    end tell
  • Normas de correo (ejecutar un script en los mensajes que coincidan con ciertos criterios). En Mail, abra Preferencias > Reglas. Cree una nueva regla con la acción "Ejecutar AppleScript". Seleccione "Abrir en el Finder" en el menú que le permite seleccionar el script a ejecutar. Abre el editor de script y guarda el código que aparece a continuación como script en la carpeta que ha abierto Mail. De nuevo en Mail, selecciona tu script guardado como el script a ejecutar:

    using terms from application "Mail"
        on perform mail action with messages theMessages for rule thisRule
            -- This block extracts the topics from the messages
            repeat with theMessage in theMessages
                set theMessageText to content of theMessage
                try
                    -- Set topic to the string starting just after the hash
                    set topic to rich text ((offset of "#" in theMessageText) + 1) thru end of theMessageText
                    -- Truncate the topic at the first space
                    set topic to rich text 1 thru ((offset of " " in topic) - 1) of topic
                on error
                    -- No topic found in message
                    set topic to ""
                end try
                log topic
            end repeat
    
        end perform mail action with messages
    end using terms from

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