Te sugiero que crees un Servicio/Quick Action para Finder y uses un acceso directo en su lugar. Este servicio verificará los archivos seleccionados actualmente y los agregará a tu computadora en un archivo de valores separados por comas (CSV). Cada vez que presiones el acceso directo, contará los archivos seleccionados, actualizará el .csv y añadirá los nombres de archivos al registro. Finalmente, querrás una notificación para ayudarte a verificar si el proceso está funcionando. También se recomienda manejar algunos errores.
Para crear un Servicio que ejecute este script:
- Abre Automator y crea un nuevo Servicio o Quick Action.
- Configura el servicio para recibir 'sin entrada' en 'Finder'.
- Agrega una acción 'Ejecutar AppleScript' y pega el script en él.
- Guarda el servicio y asigna un acceso directo a través de Preferencias del Sistema > Teclado > Accesos Directos > Servicios.
Actualiza la primera línea con el nombre de usuario y la ruta que deseas usar:
property csvPath : "Macintosh HD:Users:Username:Desktop:file_log.csv" -- Actualiza con la ruta real a tu archivo CSV
on run
-- Intenta obtener los archivos seleccionados de Finder
tell application "Finder"
activate
try
set selectedFiles to selection as alias list
if (count selectedFiles) 0 then
display notification "No se seleccionaron archivos." with title "Error"
return
end if
on error
display notification "Error al acceder a los archivos seleccionados en Finder."
return
end try
end tell
-- Inicializa la lista de archivos registrados y el conteo total
set loggedFiles to {}
set totalCount to 0
-- Intenta leer los datos CSV existentes y contar
try
set fileRef to open for access file csvPath
set eofPosition to get eof fileRef
if eofPosition > 0 then
set fileContents to read fileRef
set loggedFiles to paragraphs of fileContents
set totalCount to count of loggedFiles
end if
close access fileRef
on error errMsg number errNum
-- Manejar errores específicos de archivos
close access fileRef -- Asegurarse de cerrar el archivo después del error
if errNum is -43 then -- Archivo no encontrado
-- No se encontró el archivo, continuar como si fuera un registro nuevo
else
display dialog "Error al leer desde archivo CSV: " & errMsg
return
end if
end try
-- Verificar cada archivo seleccionado contra los archivos registrados
set newFiles to {}
repeat with aFile in selectedFiles
try
-- Convertir la selección de Finder a un alias de archivo y obtener su nombre
set filePath to POSIX path of (aFile as text)
tell application "System Events"
set fileName to name of disk item filePath
end tell
-- Verificar si el archivo ya está registrado
set end of newFiles to fileName
set totalCount to totalCount + 1 -- Incrementar el conteo total por cada archivo nuevo
on error errMsg number errNum
display dialog "Error al procesar un archivo: " & errMsg & " (Número de Error: " & errNum & ")"
end try
end repeat
-- Actualizar el archivo CSV con los nuevos archivos
if (count newFiles) > 0 then
try
set fileRef to open for access file csvPath with write permission
-- Mover al final del archivo para añadir en lugar de sobrescribir
set eof of fileRef to (get eof fileRef)
repeat with aFile in newFiles
write aFile & return to fileRef starting at eof
end repeat
close access fileRef
on error errMsg
display dialog "Error al actualizar el archivo: " & errMsg
end try
end if
-- Notificar al usuario de la finalización con el conteo total actualizado
display notification "Agregados " & (count of newFiles) & " archivos nuevos. Archivos totales: " & totalCount with title "Actualización Completa"
end run
Antes de ejecutar el Servicio, debes habilitar Acceso a Seguridad y Privacidad. Incluye Finder, Automator y cualquier otra aplicación que estés utilizando. Además, asegúrate de tener permisos de escritura para el CSV.