0 votos

Uso de Automator y AppleScript para mover un archivo a una carpeta y subcarpeta diferentes según el nombre y el contenido de un archivo

Soy un novato total en Automator y Scripting... He leído muchas respuestas a problemas un poco parecidos al mío, pero no consigo adaptarme con Automator + AppleScript.

Esto es lo que quiero hacer:

Cuando descargo un archivo en un directorio /Volumes/Macboot /Downloads (sí hay un espacio en el nombre del disco duro), por ejemplo statement_EUR_2020-05-01_2020-05-31.pdf .

Verifico si el archivo es con extensión pdf + contiene un IBAN + el nombre contiene "statement". filter for the document

Si el archivo corresponde, quiero verificar el año y el mes en el nombre y moverlo en consecuencia a la carpeta buena de Google Drive:

/Volúmenes/Macboot /Travail en cours/Google Drive/Empresa/Comptabilité/ 2020 / 05 /Compte Transferwise 1/

Con la ayuda de @Solar Mike, esto es lo que estoy intentando: Lo que estoy haciendo sin éxito en este momento:

on run {input, parameters}
    tell application "Finder"
        activate
        set theFile to input as text
        set copyFile to input as alias
        set yearName to ((characters 34 thru -1 of theFile) as string) --trim first 35
        set yearName to ((characters 1 thru -22 of yearName) as string) --trim last 23
        set monthName to ((characters 39 thru -1 of theFile) as string)
        set monthName to ((characters 1 thru -19 of monthName) as string)
        set destinationFolder to ("Macboot :Travail en cours:Google Drive:Company:Comptabilité:" & yearName & ":" & monthName & ":Compte Transferwise 1:Relevé PDF + fichier CSV:" as alias)
        copy copyFile to (destinationFolder) 
    end tell
end run

No hay error... pero no hay archivo copiado. yearName es bueno, al igual que monthName y destinationFolder, pero tal vez no uso el método bueno para copiar?

2voto

7ochem Puntos 189

Gracias a @Solar Mike, he probado línea por línea y he encontrado cómo hacerlo. Mi código :

on run {input, parameters}
    set theFile to input as text
    set yearName to ((characters 34 thru -1 of theFile) as string) --trim first 35
    set yearName to ((characters 1 thru -22 of yearName) as string) --trim last 23
    set monthName to ((characters 39 thru -1 of theFile) as string)
    set monthName to ((characters 1 thru -19 of monthName) as string)
    set destinationFolder to ("Macboot :Travail en cours:Google Drive:Company:Comptabilité:" & yearName & ":" & monthName & ":Compte Transferwise 1:Relevé PDF + fichier CSV:" as text)
    tell application "Finder"
        activate
        move theFile to destinationFolder -- use "copy source_file to folder (target_folder as alias)" to copy the files
    end tell
    set result to {yearName, monthName, theFile, destinationFolder}
    return result
end run

El problema de mi primer intento era sólo con "copiar" copiando el nombre, no el archivo. Pero como necesito que se mueva, ahora es bueno.

-2voto

Solar Mike Puntos 101

Usé esto:

tell application "Finder"
activate
        set source_folder to choose folder with prompt "Please choose the Source-Folder:" default location ((path to home folder) as alias)
        set source_files to every file in source_folder
        set target_folder to choose folder with prompt "Please choose the Taget-Folder:" default location (":Applications:" as alias)
        repeat with i from 1 to number of items in source_files
                set source_file to (item i of source_files)
                copy source_file to (target_folder) -- use "copy source_file to folder (target_folder as alias)" to copy the files
        end repeat
        set question to display dialog "  Files have  been moved.
end tell

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