0 votos

¿Cómo obtener la ruta de la carpeta en la Acción de Carpeta de Automator?

¿Cómo puedo obtener la ruta (o el nombre) de la carpeta a la que está adjunta una Acción de Carpeta de Automator y guardarla en una variable?

Mi acción de carpeta está adjunta a Descargas, copio los archivos recién añadidos en una carpeta temporal, los proceso y quiero moverlos de nuevo a Descargas. No quiero utilizar un valor codificado con Mover elementos del Finder ya que la acción de carpeta puede estar adjunta a diferentes carpetas. En su lugar, necesito que la acción de carpeta sea lo suficientemente inteligente como para mover los elementos de vuelta a la carpeta a la que está adjunta.

-1voto

wch1zpink Puntos 11

Personalmente, encuentro que crear Acciones de Carpeta directamente en Script Editor.app, me brinda mucha más flexibilidad. Una vez que guardo el documento como un archivo .scpt en la siguiente carpeta "/Users/YOUR SHORT NAME/Library/Workflows/Applications/Folder Actions/", tu nueva Acción de Carpeta estará disponible en todo el sistema y luego podrás adjuntar tu nueva acción de carpeta a cualquier carpeta usando Folder Actions Setup.app.

Este siguiente código de AppleScript de Acción de Carpeta almacenará la ruta completa de la carpeta a la que está adjunta la Acción de Carpeta, en la variable theContainingFolder

property theContainingFolder : missing value
property theMoveToFolder : path to documents folder -- Define Your Own Temporary Move To Folder
property movedFiles : missing value

on adding folder items to theFolder after receiving theNewItems
    --  Llamado después de que se han agregado elementos a una carpeta
    --
    --  theFolder es una referencia a la carpeta modificada
    --  theNewItems es una lista de referencias a los elementos agregados a la carpeta 

    tell application "Finder"
        set theContainingFolder to container of item 1 of theNewItems as alias
        -- Mover y Procesar Tus Archivos
        set movedFiles to move theNewItems to theMoveToFolder

        -- Continuar Procesando Archivos Antes de Moverlos de Vuelta a la Carpeta Original

        -- Mover Archivos Procesados de Vuelta a la Carpeta Adjunta a la Acción de Carpeta Original      
        move movedFiles to theContainingFolder
    end tell
end adding folder items to

Aquí está el código de AppleScript para el flujo de trabajo de Automator.

on run {input, parameters}
    tell application "Finder"
        set theContainingFolder to container of (item 1 of input) as alias
    end tell
    return theContainingFolder --como texto
end run

Usando este return theContainingFolder como la última línea del código de AppleScript, la "Carpeta Contenedora", almacena la variable como una Ruta Posix. (Como se muestra en la imagen a continuación)

enter image description here

Usando este return theContainingFolder as text como la última línea del código de AppleScript, la "Carpeta Contenedora", almacena la variable como una Ruta HFS... que es igual que la ruta como un alias pero sin la palabra "alias" (Como se muestra en la imagen a continuación)

enter image description here

-2voto

Wowfunhappy Puntos 33

No creo que puedas obtener la carpeta a la que está adjunta una acción, pero creo que un buen análogo sería obtener la carpeta principal del archivo actual. Por lo tanto, la carpeta principal de un archivo en ~/Descargas/MiArchivoDescargado.pdf será la carpeta Descargas, y podrías guardar eso en una variable.

Esta acción no está integrada en Automator. Sin embargo, si estás usando macOS 10.13 o anterior, puedes comprar un paquete de Acciones de Automator de terceros en http://automatedwork.server323.com/products/apps/automator-actions-for-mac-os-x-10-610-7-snow-leopard-lion/. La acción que necesitas es "Obtener carpetas principales de elementos del Finder" en el "Paquete de Acciones de Automator de Archivos y Carpetas". En el momento en que lo compré (hace unos meses), el desarrollador cobraba $20.


(También puedes lograr esto sin acciones de terceros utilizando un bloque de Applescript, algo como decir a la aplicación "Finder" que devuelva el contenedor de (entrada como alias). Sin embargo, cuando lo intenté por mí mismo, Automator parecía incapaz de guardar adecuadamente la variable. No estoy seguro si esto se debe a una limitación de Automator o a un problema con mi Applescript.)

0 votos

¡Vaya, y acabo de regalar mis acciones de Automator!

0 votos

Será un problema con tu AppleScript.

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