3 votos

¿Puedo hacer un Applescript para contar el número de archivos creados?

Me gustaría empezar a aprender AppleScript.

Quiero agregar a mi flujo de trabajo un contador que llevará un registro de la cantidad de PDF que creo para un trabajo y mantendrá un recuento de esos documentos. Luego puedo olvidarme de este archivo hasta que sea momento de revisarlo y tener una visualización concreta de mi productividad. Idealmente me gustaría un "gota" que pueda tener en el dock para arrastrar mis archivos de trabajo en la aplicación y generar un inventario con el tiempo.

Intenté esto y parece prometedor, pero siempre se queda en "1" cada vez que lo uso:

increment()

on increment()
    set currentCount to currentCount + 1
    display dialog "El recuento es ahora " & currentCount & "."
end increment

¿Cómo puedo hacer para seguir sumando?

0voto

HUSTEN Puntos 118

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:

  1. Abre Automator y crea un nuevo Servicio o Quick Action.
  2. Configura el servicio para recibir 'sin entrada' en 'Finder'.
  3. Agrega una acción 'Ejecutar AppleScript' y pega el script en él.
  4. 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.

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