Applescript: ventana abierta del buscador que muestra todos los archivos con cierta etiqueta. ¿Posible?

2

Es fácil escribir un Applescript para abrir una ventana del Finder a una carpeta determinada, por ejemplo.

indica a la aplicación "Finder" que abra "Macintosh HD: Usuarios: Nombre de usuario: Descargas"

¿Es posible que Applescript abra una ventana del Finder que muestre todos los archivos etiquetados, por ejemplo, verde?

Gracias!

    
pregunta PHL 18.01.2018 - 04:41

2 respuestas

0
  

Aquí está el flujo de trabajo como lo estoy haciendo ahora: copio una frase, abro el Finder y hago clic en las etiquetas verdes. Copio / pego esa frase para encontrar el nombre de archivo que la contiene. Luego se abre en Vista previa, desde donde lo imprimo. Hago esto cientos de veces al día y tengo un teclado programable que me ahorra muchos clics. Se ejecutará Applescripts.

Ya que ahora está claro que no es necesario que los archivos se muestren en la ventana Finder para lograr su objetivo final, tomé prestada la sugerencia de @apple9321 y usé mdfind para recuperar las rutas de los archivos y hacer coincidir los nombres de archivo con el contenido del portapapeles.

La primera mitad de la secuencia de comandos a continuación realiza estas tareas. Lo siento, el guión parece tan largo; en realidad no lo es, ya que la mayoría de ellos está ocupado por los comentarios que agregué para guiarlo a través de lo que hace cada parte del guión. Copie y pegue en Script Editor y ejecútelo (con el texto adecuado ya en su portapapeles).

    -- Get the text from the clipboard
    -- to use for searching filenames
    set SearchTerm to the clipboard as text
    set SearchTerm to quoted form of (["*", SearchTerm, "*"] as text)

    -- Run a bash command to retrieve all
    -- files with a green tag and a filename
    -- that includes the above search term
    -- (case-insensitive)
    set Command to ["mdfind ", ¬
        "\"((kMDItemUserTags = '*Green*'cd) ", ¬
        "&& (kMDItemDisplayName = ", ¬
        SearchTerm, ¬
        "cd))\""] as text

    try -- Run the bash command and get a list of file paths
        set FileList to paragraphs of (do shell script Command)
    on error -- No matching filenames, script terminates
        return 0
    end try

    -- Convert the string file paths to a class
    -- that AppleScript can use to reference the files
    repeat with PathToFile in FileList
        set end of FileList to POSIX file PathToFile
        set FileList to rest of FileList
    end repeat

    -- Open the files in Preview and print the documents.
    -- You may not need to actually need to include the
    -- 'open' command, as I believe Preview will still
    -- be able to run a 'print' command if you hand it a
    -- list of file references, e.g. print FileList
    tell application "Preview"
        open FileList
        -- You can omit 'with properties' or just
        -- include the print settings you want
        -- (see the AppleScript "Preview" dictionary
        -- for details of other available settings)
        print documents with properties ¬
            {copies:1, target printer:"Epson Stylus Photo PX830"}
    end tell

La última mitad del script realiza algunas tareas domésticas con los tipos de archivos para que sean utilizables, pero luego es lo suficientemente simple como para que AppleScript abra el archivo (s) en Preview e imprima. / p>

Tengo que poner un descargo de responsabilidad aquí e indicar que no he podido probar el comando print para Preview en AppleScript. Esto es porque no tengo una impresora. Pero mi fuerte sensación es que esto debería funcionar con pocos ajustes, si es que los hay, y probablemente incluso le permitiría imprimir sin abrir primero los archivos:

    tell application "Preview" to print FileList

Pero, como dije, no puedo probarlo físicamente y estoy siguiendo lo que está implícito en el diccionario AppleScript de Vista previa (que también contiene una lista de ajustes de impresión disponibles en caso de que necesite Especifíquelos desde el script. Especifiqué copies y target printer simplemente como dos ejemplos que parecían ser los más útiles, pero no son necesarios).

¿Esto suena como que satisface tus necesidades?

Su teclado programable suena como una buena manera de activar este script después de copiar la frase de búsqueda en el portapapeles. El método alternativo que hubiera sugerido para otros que no tienen un dispositivo de este tipo sería crear un servicio Automator , al cual se puede asignar un acceso directo (tecla de acceso rápido) para activar el script de esa manera; o permitir que el servicio se active después de resaltar un texto y hacer clic con el botón derecho para enviar este texto directamente al servicio como una alternativa a copiarlo en el portapapeles.

Una nota final: elegí mdfind en esta instancia porque implicaste que querías buscar en cada archivo con etiqueta verde en tu disco duro, y esto lo hace más rápido que los comandos integrados de AppleScript. Sin embargo, si solo necesita buscar archivos con etiquetas verdes en una carpeta específica o en un par de carpetas, puede ser mejor usar comandos de AppleScript integrados (dependiendo de cuántos archivos haya en estas carpetas). Si encuentra archivos que faltan en los resultados de mdfind , es posible que deba volver a indexar Spotlight ( sudo mdutil -Ea desde Terminal ). Lleva un tiempo reconstruir el almacén de metadatos, pero los archivos omitidos en los resultados de búsqueda que deberían aparecer ahora estarán allí. Puede obtener una vista previa de la lista completa de resultados de búsqueda en Terminal ingresando este comando: mdfind "kMDItemUserTags == 'Green'" , que debería enumerar todos los archivos con etiquetas verdes.

Si necesita ayuda o tiene más preguntas, deje un comentario y le responderé. Puedo modificar el código si tienes pensamientos específicos.

    
respondido por el CJK 19.01.2018 - 04:57
3

Si puede procesar una matriz de rutas de archivos (en lugar de abrir una ventana del Finder), puede usar la utilidad mdfind :

set greenFiles to paragraphs of (do shell script "mdfind \"kMDItemUserTags == 'Green'\"")
    
respondido por el apple9321 18.01.2018 - 07:59

Lea otras preguntas en las etiquetas