AppleScript - Error: Esperar fin de línea encontrado al final del script

2

Soy un principiante de AppleScript y recibo el error anterior en lo que debería ser un AppleScript muy simple. Creo que está en algún lugar de la declaración de conjunto pero no se puede determinar. Agradecería enormemente cualquier orientación o sugerencia.

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
    
pregunta Qwikatb 21.07.2018 - 21:36

2 respuestas

1

Ha omitido la línea de cierre en el bloque using terms from... .

▸ Agregue end using terms from al final de su script.

Sin embargo, su script encontrará un error, dado que la variable theAttachment no está definida.

En notas menos importantes, no necesita declarar attachmentsFolder como clase Unicode Text , ya que ya expresó el valor de la variable como una cadena (que es texto Unicode). Como se trata de una carpeta que está especificando, la ruta HFS debería tener un punto final, que ha omitido. Esto podría llevar a otro error cuando lo concatene con el nombre del archivo. De hecho, no es necesario utilizar las rutas HFS en absoluto cuando se proporciona una ruta a la ubicación donde se guardará el archivo adjunto. Una cadena de ruta POSIX es totalmente aceptable, y en realidad es preferible. Entonces, se vería así:

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

También diría que el try ... end try es innecesario, y obstaculiza: si hubo un error en el comando save (que habrá tal como está actualmente, dado el colon omitido en la cadena de ruta), pasaría desapercibido y su archivo adjunto simplemente no se guardaría, pero no tendría idea de por qué hasta que elimine el try ... end try enclosure.

Pero la razón por la que realmente no lo necesita es porque no hay razón para silenciar los errores en este punto del script. Es el último comando, por lo que si el script termina debido a un error, no importa. Por lo general, el bloque try sería útil si hubiera más comandos para seguir después, y no quiso que la falla al guardar el archivo adjunto impida que el resto del script se ejecute.

La implementación de estos cambios daría lugar a esto como un script revisado:

    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

(Aunque todavía necesita definir la variable theAttachment ).

    
respondido por el CJK 22.07.2018 - 00:05
1

Delimita el signo y usando una barra invertida como:

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

De: enlace

    
respondido por el IconDaemon 21.07.2018 - 21:39

Lea otras preguntas en las etiquetas