0 votos

Elija sólo el primer archivo de entrada de la entrada

Estoy haciendo una aplicación de Automator que ejecutará un AppleScript. La aplicación se utilizará para ejecutar un Terminal script en un archivo que la entrada recibe - tanto por el lanzamiento de la aplicación o por soltar un archivo en el icono de la aplicación. Al lanzar la aplicación, el usuario puede seleccionar un archivo manualmente. Sin embargo, cuando el usuario deja caer varios archivos en la aplicación, quiero que elija sólo el primer archivo de esos archivos, porque el script utilizado más tarde sólo puede trabajar con un solo archivo a la vez.

A continuación se muestra el código que tengo hasta ahora. Cuando uno o varios archivos son lanzados en la aplicación, obtengo un error: "No se puede obtener el elemento 1 de 1".

Cualquier consejo será muy apreciado. Gracias

on run {input, parameters}
    if input is {} then
        set inputFile1 to (POSIX path of (choose file with prompt "Please select a file to process:"))
    end if

    if input is not {} then
        set inputFile1 to {}
        repeat with i from 1 to count input
            set end of inputFile1 to quoted form of (POSIX path of (first item of i))
        end repeat
    end if

    tell application "Terminal"
        if not (exists window 1) then reopen
        activate
        do script "xxx" & inputFile1 in window 1
    end tell
end run

0voto

user3439894 Puntos 5883

Lo siguiente ejemplo AppleScript código es la codificación mínima para lograr el objetivo presentado en el PO, es decir, actuar sólo en el primer archivo se ha dejado caer sobre el Automatizador creado AppleScript aplicación utilizando un único Ejecutar AppleScript acción :

on run {input, parameters}

    if input is {} then
        set inputFile1 to ¬
            quoted form of POSIX path of ¬
            (choose file with prompt "Please select a file to process:")
    else
        set inputFile1 to quoted form of ¬
            (POSIX path of first item of input)
    end if

    tell application "Terminal"
        if not (exists window 1) then reopen
        activate
        do script "echo" & space & inputFile1 in window 1
    end tell

end run
  • Obsérvese el uso de echo en el do script comando para las pruebas, en lugar de xxx como en el OP.

enter image description here


Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y no contiene ningún <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso de la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.

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