Apple Script no se ejecuta como se esperaba

0

El siguiente es un applecript que está destinado a tomar el cuerpo del último correo electrónico y extraer texto de él. Como puedes ver el resultado se muestra a continuación. Este resultado se muestra porque el script se estaba ejecutando correctamente antes. Ahora no lo es.

Elcorreoelectrónicoqueenviémástardeconteníaelmensaje"#tech sxi" pero la secuencia de comandos no muestra el resultado correcto para este correo electrónico. Este no es el único. Cada vez, estoy enviando un nuevo correo y ejecutando el script nuevamente, me sale el mismo problema, el resultado simplemente no cambia.

    
pregunta Kevin Vert 21.10.2014 - 10:18

1 respuesta

1

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

Al recuperar mensajes usando AppleScript, Mail ordena sus cuentas de buzón alfabéticamente . Dentro de la bandeja de entrada de cada cuenta, los mensajes se ordenan los más nuevos primero. Lo que seleccionó en Mail no cambia el orden en el que se devuelven a AppleScript.

Entonces, si tiene las siguientes cuentas y mensajes de la bandeja de entrada que aparecen en Correo en este orden:

  • Mi iCloud
    • Mensaje con fecha 1/5/16
    • Mensaje del 10/01/16
  • Mi Gmail
    • Mensaje del 10/01/16
    • Mensaje con fecha 1/5/16

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

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

  • Nombre el buzón específico. Esto siempre configurará el Mensaje al mensaje más nuevo en "Mi Gmail". (El nombre de la cuenta es el mismo que se ve en Correo en la lista debajo de la Bandeja de entrada).

    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 inesperadamente.

Aquí hay un par de formas confiables para extraer datos de mensajes:

  • Use mensajes seleccionados (mensajes que seleccionó haciendo clic en ellos en Correo):

    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
    
  • Reglas de correo (ejecute una secuencia de comandos en mensajes que coincidan con ciertos criterios). En Correo, abre Preferencias > Reglas. Cree una nueva regla con "Ejecutar AppleScript" como la acción. Seleccione "Abrir en Finder" en el menú que le permite seleccionar qué script ejecutar. Abra el Editor de secuencias de comandos y guarde el código a continuación como una secuencia de comandos en la carpeta Correo abierto. De vuelta en Mail, seleccione su script guardado como el script para 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
    
respondido por el ggruen 12.02.2016 - 00:02

Lea otras preguntas en las etiquetas