¿Por qué no funciona como comando de voz, ni en Automator pero sí en la ejecución desde el editor de scripts?
Buenas noches.
He escrito un archivo de appleScript para mover los archivos seleccionados en el Finder a una carpeta situada en una unidad de disco externa.
Si se ejecuta desde el Editor de Scripts, su funcionamiento es correcto; sin embargo, al intentar ejecutarlo como un comando de voz no se lleva a cabo ninguna acción (aunque en la barra superior del sistema aparece el icono del “engranaje” simulando que algo se está realizando.
He intentado poner el código en Automator para hacer una aplicación en el escritorio donde se puedan arrastrar los archivos seleccionados, pero Automator da un “Error de sintaxis” ---> ("El gestor run está especificado más de una vez, o se han añadido comandos de alto nivel").
--Creación de menú y definimos las opciones del menú
tell application "System Events"
activate
set laLista to {"Cine antiguo (1900-2009)", "Cine moderno (2010-2014)", "Cine reciente (2015-2020)", "Óscar antiguos (1928-1990)", "Óscar modernos (1991-2020)"}
--Permite elegir el elemento y define un elemento seleccionado por defecto
choose from list laLista with prompt "Elige una opción" default items {"Cine reciente (2015-2020)"}
set eleccionDeLista to result as text
end tell
-- Definir la ruta según el elemento elegido:
if eleccionDeLista is "Cine antiguo (1900-2009)" then
set ruta to (POSIX file "/Volumes/1_NO_al2009/NO_1900 - 2009")
else if eleccionDeLista is "Cine moderno (2010-2014)" then
set ruta to (POSIX file "/Volumes/2_NO_10_14_OSal90/NO_2010 - 2014")
else if eleccionDeLista is "Cine reciente (2015-2020)" then
-- Submenú para elegir año de cine moderno
tell application "System Events"
activate
set anoReciente to {"2015", "2016", "2017", "2018", "2019", "2020"}
--Permite elegir el elemento y define un elemento seleccionado por defecto
choose from list anoReciente with prompt "Elige una opción" -- default items {"2019"}
set eleccionAno to result as text
end tell
if eleccionAno is "2015" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2015")
else if eleccionAno is "2016" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2016")
else if eleccionAno is "2017" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2017")
else if eleccionAno is "2018" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2018")
else if eleccionAno is "2019" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2019")
else if eleccionAno is "2020" then
set ruta to (POSIX file "/Volumes/6_NO_15-20/NO_2015 - 2020/2020")
end if
else if eleccionDeLista is "Óscar antiguos (1928-1990)" then
set ruta to (POSIX file "/Volumes/2_NO_10_14_OSal90/ÓSCAR 28 - 90")
else if eleccionDeLista is "Óscar modernos (1991-2020)" then
set ruta to (POSIX file "/Volumes/5_CICLOS2_OS91-20/ÓSCAR 91 - 20")
end if
end
try -- Evita el mensaje de error si se cancela la selección
tell application "Finder"
set archivoSeleccionado to selection as alias
move archivoSeleccionado to ruta -- Mueve el archivo a su destino
delay 10 -- (Prueba con valores 1 ➡︎ 10)
delete file archivoSeleccionado -- Borra el origen
end tell
on error
display dialog "Operación cancelada por el usuario :-(("
end try
Por otra parte, tengo las películas ordenadas en carpetas según el año de realización y había pensado en la posibilidad de extraer la cadena del año que forma parte del nombre de archivo ("2002 El arca rusa [Aleksandr Sokurov] VOSE 2002 (7,1).avi") para fabricar una ruta más precisa donde mover el archivo; es decir, que si la película tiene en su nombre la cadena "2002", 2002 sea usado para formar la ruta para enviarlo a la carpeta destinada a recibir los archivos de ese año.
Pido disculpas por la extensión de la pregunta y doy las gracias de antemano.
Salud.