Al crear una carpeta en una carpeta específica, cree subcarpetas en la nueva carpeta

1

Soy nuevo en AppleScript y Automator. He explorado los diferentes hilos en Apple pero no puedo encontrar algo útil.

Bueno, mi problema es que tengo una carpeta, es decir, "trabajo", he aplicado la acción de carpeta en ella. Al crear una nueva carpeta en "work", es decir, "abc", quiero crear tres nuevas carpetas en "abc". Revisa mi código

on adding folder items to this_folder after receiving added_items
  tell application Finder
    repeat with this_item in added_items
        make new folder at this_item with properties {name:"Main"}
        make new folder at this_item with properties {name:"Lower"}
        make new folder at this_item with properties {name:"Upper"}
   end repeat
  end tell
end adding folder items to
    
pregunta Breathe Hacker 10.08.2017 - 17:45

1 respuesta

1

Lo primero que veo mal en su código es tell application Finder , ya que Finder en este caso es una variable , ya que no tiene doble cita. Debería ser: tell application "Finder"

Dicho esto, tienes como etiquetas, macos , mac , applescript y automator y no se indica en el OP dónde y cómo ha aplicado el código a la carpeta de destino , this_folder , como una Acción de carpeta . En otras palabras, si ha creado la Acción de carpeta en Automator y solo tiene ese código como el código en una acción Ejecutar AppleScript , incluso con las comillas dobles alrededor de Finder , fallará. Esa estructura de codificación solo es válida como un AppleScript .scpt archivo asignado a una Acción de carpeta usando Configuración de acciones de carpeta ... en la sección Servicios del menú de contactos en Finder .

El siguiente código de ejemplo es cómo lo escribiría como AppleScript .scpt archivo asignado a una Acción de carpeta usando Configuración de acciones de carpeta ... en la sección Servicios del menú de contacto en Finder .

on adding folder items to this_folder after receiving added_items
    try
        tell application "Finder"
            repeat with this_item in added_items
                if (class in (get properties of this_item) as string) is "«class cfol»" then
                    make new folder at this_item with properties {name:"Main"}
                    make new folder at this_item with properties {name:"Lower"}
                    make new folder at this_item with properties {name:"Upper"}
                end if
            end repeat
        end tell
    end try
end adding folder items to

Tenga en cuenta que aunque al utilizar la declaración try , debería cometer cualquier error, sin embargo, también he agregado una declaración if para asegurarse El elemento sobre el que se actúa es una carpeta , no un archivo . Tenga en cuenta que si bien la declaración if no es absolutamente necesaria, no obstante, es una forma más adecuada de escribir código en mi opinión, sin embargo, podría omitirse si < em> que quieras.

AppleScript .scpt archivos del usuario para Acciones de carpeta deben guardarse, por ejemplo:

/Users/me/Library/Scripts/Folder Action Scripts/filename.scpt

Si está creando la Acción de carpeta a través de Automator , en la acción Ejecutar AppleScript use la siguiente ejemplo código_:

on run {input, parameters}
    try
        tell application "Finder"
            repeat with this_item in input
                if (class in (get properties of this_item) as string) is "folder" then
                    make new folder at this_item with properties {name:"Main"}
                    make new folder at this_item with properties {name:"Lower"}
                    make new folder at this_item with properties {name:"Upper"}
                end if
            end repeat
        end tell
    end try
end run

Tenga en cuenta que he probado ambos bloques de código de ejemplo en las condiciones indicadas anteriormente y funciona como se codificó.

    
respondido por el user3439894 10.08.2017 - 20:52

Lea otras preguntas en las etiquetas