AppleScript - Errore: Aspettatevi la fine dello script alla fine della riga

2

Sono un debuttante di AppleScript e ricevo l'errore sopra riportato in quello che dovrebbe essere un AppleScript molto semplice. Credo che sia da qualche parte nella dichiarazione stabilita, ma incapace di accertare. Apprezzerebbe molto qualsiasi guida o suggerimento.

using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
set attachmentsFolder to (("Macintosh HD:Users:John:Dropbox:John & Julie:Wirecard") as Unicode text) 
tell application "Mail"
    -- Save the attachment
        set savePath to attachmentsFolder & (name of theAttachment)
            try
                with timeout of 1800 seconds
                    save theAttachment in file (savePath)
                end timeout
            end try 
end tell
end perform mail action with messages
    
posta Qwikatb 21.07.2018 - 21:36
fonte

2 risposte

1

Hai omesso la linea di chiusura nel blocco using terms from... .

▸ Aggiungi end using terms from alla fine del tuo script.

Tuttavia, lo script incontrerà un errore, dato che la variabile theAttachment non è definita.

Su note meno importanti, non è necessario dichiarare attachmentsFolder come classe Unicode Text , poiché hai già espresso il valore della variabile come stringa (che è testo unicode). Dal momento che si tratta di una cartella che stai specificando, il percorso HFS dovrebbe avere un punto finale, che hai omesso. Questo in realtà causerebbe un altro errore quando lo si concatena con il nome del file. In effetti, non è necessario utilizzare i percorsi HFS quando si fornisce un percorso alla posizione in cui l'allegato deve essere salvato. Una stringa di percorso POSIX è interamente accettabile e in realtà preferibile. Quindi, sarebbe simile a questo:

    set attachmentsFolder to "/Users/John/Dropbox/John & Julie/Wirecard/"
    set savePath to the attachmentsFolder & (the name of theAttachment)
    save theAttachment in POSIX file savePath

Direi anche che il try ... end try non è necessario e che ostacola: se c'è stato un errore nel comando save (che ci sarà come al momento attuale, dati i due punti omessi nella stringa del percorso), passerebbe inosservato e il tuo allegato semplicemente non verrebbe salvato, ma non avresti idea del motivo fino a quando non rimuovi il try ... end try enclosure.

Ma la ragione per cui non ne hai davvero bisogno è perché non c'è motivo di mettere a tacere gli errori a questo punto dello script. È l'ultimo comando, quindi se lo script termina a causa di un errore, non importa. Tipicamente, il blocco try sarebbe utile se ci fossero più comandi da seguire in seguito, e non volevi che l'errore di salvare l'allegato impedisse l'esecuzione del resto dello script.

L'implementazione di queste modifiche si tradurrebbe in uno script revisionato:

    using terms from application "Mail"
        on perform mail action with messages theMessages for rule theRule
            set attachmentsFolder to "/Users/John/Dropbox/John & Julie/Wirecard/"
            tell application "Mail"
                set savePath to the attachmentsFolder & the name of theAttachment

                with timeout of 1800 seconds -- 30 minutes!
                    save theAttachment in POSIX file savePath
                end timeout
            end tell
        end perform mail action with messages
    end using terms from

(Sebbene sia ancora necessario definire la variabile theAttachment .)

    
risposta data 22.07.2018 - 00:05
fonte
1

Delimitare la e commerciale utilizzando una barra rovesciata in questo modo:

(("Macintosh HD: Utenti: John: Dropbox: John \ & Julie: Wirecard")

Da: link

    
risposta data 21.07.2018 - 21:39
fonte

Leggi altre domande sui tag