Apple Script non è in esecuzione come previsto

0

Quello che segue è un applescript che ha lo scopo di prendere il corpo dell'ultima email e di estrarre del testo da esso. Come puoi vedere il risultato è mostrato sotto. Questo risultato è mostrato come lo script stava funzionando correttamente prima. Adesso non lo è.

L'emailchehoinviatoinseguitocontenevailmessaggio"#tech sxi" ma lo script non mostra l'output corretto per questa email. Questo non è l'unico. Ogni volta, sto inviando una nuova mail e rieseguendo lo script, ottengo lo stesso problema, il risultato non cambia.

    
posta Kevin Vert 21.10.2014 - 10:18
fonte

1 risposta

1

Come uno dei commentatori ha fatto allusione a "ricevere il primo messaggio di posta in arrivo" probabilmente non restituirà ciò che ti aspetti.

Quando recuperi i messaggi usando AppleScript, Mail ordina i tuoi account di casella di posta alfabeticamente . All'interno della posta in arrivo di ciascun account, i messaggi vengono ordinati per primi. Ciò che hai selezionato in Mail non cambia l'ordine in cui vengono restituiti ad AppleScript.

Quindi, se hai i seguenti account e messaggi di posta in arrivo che appaiono in Mail in questo ordine:

  • Il mio iCloud
    • Messaggio datato 1/5/16
    • Messaggio del 1/10/16
  • Il mio Gmail
    • Messaggio del 1/10/16
    • Messaggio datato 1/5/16

"ricevi il primo messaggio di posta in arrivo" restituirà il messaggio del 1/5/16 dall'account "My Gmail" (G viene prima di io, 1/5/16 viene prima dell'1 / 10/16).

La mia ipotesi è che tu abbia più di un account in Mail.

  • Assegna un nome alla casella postale specifica. Ciò imposterà sempre il messaggio sul nuovo messaggio in "My Gmail". (Il nome dell'account è lo stesso che vedi in Mail nell'elenco sotto Posta in arrivo).

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

Questo è un approccio insolito, tuttavia, man mano che la posta si sposta, quindi il primo messaggio nella tua casella di posta potrebbe diventare il tuo secondo messaggio in modo imprevisto.

Ecco un paio di metodi affidabili per estrarre i dati dai messaggi:

  • Utilizza messaggi selezionati (i messaggi che hai selezionato facendo clic su di essi in 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
    
  • Regole di posta (esegui uno script su messaggi che soddisfano determinati criteri). In Mail, apri Preferenze > Regole. Crea una nuova regola con "Esegui AppleScript" come azione. Seleziona "Apri nel Finder" dal menu che ti consente di selezionare quale script eseguire. Apri Script Editor e salva il codice seguente come script nella cartella Posta aperta. Tornati in Mail, seleziona lo script salvato come script da eseguire:

    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
    
risposta data 12.02.2016 - 00:02
fonte

Leggi altre domande sui tag