AppleScript: ¿Cómo verificar si el portapapeles consiste en un file (en lugar de text)?

Si mi comprensión es correcta, hay dos types de contenido que pueden copyrse en el portapapeles global de Mac (todo el sistema):

  • text

o

  • ¿Cómo otorgo permiso de accesibilidad a mi AppleScript y a los events del sistema en Mavericks?
  • Habilitar Safari Zoom por Script
  • AppleScript: 'exists' devuelve verdadero cada vez
  • ¿Cómo copio el contenido de text de un cuadro de dialog en OS X?
  • Tarjeta flash SD LEA-SOLAMENTE de repente
  • Obtener pulsaciones de teclas en VLC a través de AppleScript
  • Aunque son dos types de datos diferentes y discretos, comparten el mismo portapapeles. Por ejemplo, si tiene un file image en su portapapeles y luego copy una oración de text , la oración sobrescribirá el file de image, y viceversa. Por favor, corríjame si estoy equivocado.

    Mi pregunta es, ¿cómo puedo determinar si el portapapeles no contiene text usando AppleScript?

    El context de mi pregunta es un file .scpt de AppleScript que habla el text seleccionado en la voz del sistema en un volumen específico. El text seleccionado se copy en el portapapeles, y luego el text se pronuncia mediante el command say . La secuencia de commands se desencadena mediante una pulsación de tecla a través de FastScripts.app.

    De vez en cuando, aparece un cuadro de dialog de error que dice "Número de error: -1728". Este error ocurre cuando, en lugar de resaltar el text , he resaltado o seleccionado un file real. La function de voz de Mac no puede pronunciar un file ; El habla solo puede verbalizar el text .

    Entonces, me gustaría crear una statement if...then en mi script para detectar este error. Idealmente, me gustaría convertir el file a text , si es posible de la forma en que lo hace TextEdit.

  • ¿Por qué iTunes vuelve a abrir después de salir de la aplicación?
  • Motor de gestión de Intel: ¿es vulnerable macOS?
  • iCal y Mac Office 2011
  • Fotos álbum inteligente para fotos sin gente en absoluto
  • Tengo una MacBook Air 13 "y me gustaría actualizar a OS Sierra
  • Ejecute y cree un proyecto de Visual Studio en Mac OS X
  • One Solution collect form web for “AppleScript: ¿Cómo verificar si el portapapeles consiste en un file (en lugar de text)?”

    Si el Portapapeles contiene un object de file , la clipboard info contendrá, por ejemplo, «class furl» (una URL de file), junto con muchas otras classs.

    El siguiente código de ejemplo comprobará la presencia de «class furl» en la clipboard info :

     if ((clipboard info) as string) contains "«class furl»" then say "the clipboard contains a file named " & (the clipboard as string) else say "the clipboard does not contain a file" end if 

    Actualizar:

    Como mencioné en uno de mis comentarios, hay otras maneras de codificar esto, y este enfoque devolverá una list vacía o una list que contenga una list , que debería ser más rápida en lugar de la 14 que devuelve el primer ejemplo si contiene un file . Si el Portapapeles no contiene un file , entonces la list devuelta está vacía y se equivoca, estableciendo cbFile en false , y si no está vacío, estableciéndolo en true , que luego se testing en el siguiente ejemplo.

     try (item 1 of (clipboard info for «class furl»)) set cbFile to true on error set cbFile to false end try if cbFile then say "the clipboard contains a file named " & (the clipboard as string) else say "the clipboard does not contain a file" end if 

    Por cierto, ejecuté el command de purge en Terminal entre estos dos ejemplos y sentí que el segundo ejemplo es un poco más rápido, sin embargo, YMMV.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).