Enviado por Alvaro Anaya M. sobre Nov 27, 2009 en Manuales | 20 comentarios
La verdad es que da gusto cuando ejecutamos un script o una aplicación y nos informa correctamente de lo que está haciendo, o de lo que hizo, sobre todo si lo hace mediante un gestor de mensajes como Growl.
Además, como es un tema interesante, a la par que constructivo, pues voy a tratarlo en este artículo así que vamos a allá con… la comunicación con el usuario desde nuestros applescript.
Lo primero que tenemos que hacer es, además de tener Growl instalado (Evidentemente 😉 ) es conocer el nombre del proceso para referirnos a él, que es GrowlHelperApp.
De esta forma comenzaremos el proceso con un bloque «Tell» hacia dicho proceso:
tell application "GrowlHelperApp"
La mejor forma de conocer todas las posibilidades que tenemos de interactuar con Growl es añadir su diccionario a la biblioteca del editor de applescript, ya que por defecto no aparece. Para ello tendremos que añadir el archivo GrowlHelperApp (Está ubicado dentro del paquete Growl.prefpane) a dicha biblioteca y así podremos ver todos los comandos y parámetros que admite.

Biblioteca Applescript
En este caso nos limitaremos mostrar una notificación muy básica para la cúal, la siguiente linea tras la sentencia «Tell» será definir un nombre para el mensaje. Para este ejemplo lo definiremos con la variable Notificacion a fin de poder usarla de nuevo en la próxima línea :
set Notificacion to "Título del mensaje"
La cabecera está lista, ahora ya nos metemos con el mensaje en cuestión. Como hemos dicho, en este ejemplo vamos a mostrar un aviso muy básico por lo que con una sola linea más, crearemos el cuerpo del mensaje:
notify with name Notificacion title "Esto es el Título" description "Esto es el mensaje" application name Notificacion
Tras eso solamente nos quedaría cerrar de nuevo el Bloque «Tell». Veamos como queda todo junto:

Ejemplo de mensaje básico
1 2 3 4
| tell application "GrowlHelperApp"
set Notificacion to "Nombre de la notificación"
notify with name Notificacion title "TITULO" description "Esto es el mensaje" application name Notificacion
end tell |
Lo normal es que el nombre de la notificación (La variable Notificacion) sea igual que el título de la misma, pero no tiene por que ser así obligatoriamente, de hecho en el ejemplo, lo he cambiado por la cadena «TITULO».
Como ejemplo, la anterior notificación ya nos sirve perfectamente pero ahora vamos a rizar el rizo un poco más. Vamos a crear una SUBRUTINA o HANDLER (Si no conoce nada del mundo de la programación, no se asuste, que lo explicaré todo) llamada ComunicacionUsuario, al que le podremos pasar la variable MensajeUsuario.
Esto nos servirá para poder llamar a dicha subrutina desde nuestros programas, sin tener el codigo de la misma (En este caso, el codigo que mostrará las notificaciones) mezclado con nuestro código, permitiendo así que sea mucho mas facil la lectura y comprension del programa en general.
El tema para llamar a una subrutina incluida en nuestro script o aplicación, basicamente funciona así:
1 2 3 4 5 6 7
| (*
Estas son unas lineas de ejemplo de lo que podría ser un programa cualquiera
Las siguientes lineas declaran la variable que contendrá el mensaje a mostrar
y llamaremos a la subrutina para mostrar dicho mensaje
*)
set MensajeUsuario to "Mensaje que queremos mostrar al usuario"
ComunicacionUsuario(MensajeUsuario) |
El anterior código es un ejemplo sencillo de como llamar a la subrutina de mensajes que vamos a crear a continuación. Si es un programa que puede mostrar varios mensajes, dependiendo del punto en el que se encuentre, bastará con escribir al final del programa una subrutina como la que viene a continuación y a la cual podremos llamar todas las veces que queramos con 2 simples lineas como las anteriores, en vez de escribir todo el codigo de llamar a Growl cada vez que necesitamos invocar los mensajes. Para que nos muestre un mensaje u otro, solamene tendremos que declarar el mensaje que queramos que nos muestre en cada ocasión a través de la variable MensajeUsuario antes de llamar a la subrutina.
Además el ejemplo de subrutina que vamos a crear hace una comprobación más, ya que es posible que el equipo donde se lance nuestra aplicación o Script no tenga Growl, por lo que seria un fallo bastante grande dar por hecho que estamos informando al usuario y que no sea verdad (A parte de que lo más probable es que se genere un error que termine con la ejecución del Script o aplicación). Por esto mismo, añadiremos unas lineas para comprobar si Growl se está ejecutando y, en el caso de que no esté habilitado en el equipo, mostraremos un diálogo estándar de applescript como el que muestra la siguiente imagen:

Diálogo estándar de Applescript
Aunque se podría compactar el código bastante más, he decidido dejarlo así para que sea más sencillo de comprender para la gente que no sabe programación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| on ComunicacionUsuario(MensajeUsuario)
tell application "System Events"
if exists process "GrowlHelperApp" then
set ExisteGrowl to 1
else
set ExisteGrowl to 0
end if
end tell
if ExisteGrowl is 1 then
tell application "GrowlHelperApp"
set Notificacion to "Extractor de Enlaces"
set LosMensajes to {Notificacion}
register as application Notificacion all notifications LosMensajes default notifications {Notificacion} icon of application "Finder.app"
notify with name Notificacion title Notificacion description MensajeUsuario application name Notificacion
end tell
else
display dialog MensajeUsuario & ". (Se muestra este mensaje al no detectar Growl)" with title "Notificación al usuario" buttons "OK" with icon 2
end if
end ComunicacionUsuario |
En este ejemplo, también hemos mejorado un poco más la notificación de Growl añadiéndole alguna cosilla más como el icono del Finder, haciendo que tenga un aspecto un poquito más cuidado. Además tenga en cuenta que esto es solamente un ejemplo cuya finalidad es servir de guía haciéndole ver las posibilidades de este sistema de notificaciones. De la misma manera que añadimos el icono del Finder, podremos añadir cualquier otro icono.

Mensaje de Growl con icono personalizado
Eso si, ahora como siempre, el tema lo comienzo yo pero el límite del mismo lo pone usted ya que esto puede dar mucho más de si, haciendo vuestras aplicaciones o scripts mucho más «Cool».
leer más
Enviado por Alvaro Anaya M. sobre Oct 15, 2009 en Varios | 24 comentarios
———————— Nota de actualización ———————
Este artículo tiene una actualización. Concretamente es en la parte del Applescript ya que he tenido que modificarlo haciendo alguna instrucción más simple ya que, el anterior código, no se ejecutaba bien en algunos equipos a pesar de que en otros si. Además en los que fallaba tampoco lo hacía siempre y era de forma completamente aleatoria, motivo por el cual, tras buscar los posibles problemas y gracias a las pruebas que realizó @zigaurre, quien también detectó el problema, he llegado a la conclusión de que seria más seguro sustituir el código y, de hecho, así ha sido.
Eso si, agradecería mucho que si alguien más ha experimentado este problema, me lo hiciese saber, ya que por ahora solamente ha ocurrido en un equipo, al menos que yo sepa, y casualmente es el único que tiene el Snow Leopard actualizado sobre una instalación anterior (Repito, al menos que yo sepa que le ha ocurrido).
El código que muestra el artículo ya está modificado así que no se preocupe porque pueda utilizarlo por error ya que no seria posible ya que, el enlace de descarga para quienes no quieran realizar los pasos a mano, también ha sido actualizado.
———————— Fin de la Nota de actualización ———————
Prácticamente de la misma forma que CREAMOS UN SERVICIO DE TRADUCCIÓN en nuestros MAC con Snow Leopard y gracias a la idea que me dió el compañero @zigaurre en twitter, se me ocurrió una solución al problema que se produce con la combinación de la beta de Quicksilver para Snow Leopard, la única versión de este genial lanzador de apps para este sistema y los triggers. El problema en concreto es que, por muchas veces que nos molestemos en crear el fabuloso trigger que nos comenta Berto Pena (@bertop) en ESTE ARTICULO de Think Wasabi (100% recomendado, tanto el artículo como el Blog), para pasarle comandos a YubNub, Quiksilver no tarda mucho tiempo en eliminarlo, haciéndolo completamente inservible (Repito, con la combinación de la última versión de Quicksilver y Snow Leopard solamente)
Dado que en Snow Leopard se mejora más aún el tema de los servicios de OS X permitiendo asignarle fácilmente un atajo de teclado a cada uno de ellos, y teniendo en cuenta que AUTOMATOR ha facilitado, aún más si cabe, la creación de sus flujos de trabajo y entre ellos el de la creación de servicios, no fue muy difícil llegar a la conclusión de que si unimos las posibilidades que nos ofrecen estas soluciones, podremos crear un servicio para buscar con YubNub, ya sea invocándolo mediante una rápida combinación de teclas o incluso con un par de clics de ratón a través del menú superior del sistema.
Una vez presentada la idea, vamos a ponernos manos a la obra aunque por esta vez, se lo pondré más fácil a la gente sin tiempo, o a quienes no quieren, por el motivo que sea, realizar todos los pasos y simplemente prefieran descargarlo ya hecho.
El archivo a descargar es: BUSCAR CON YUBNUB
Y la ruta donde debe estar ubicado es:
Carpeta de usuario /Libreria/Services
Ahora bien, si lo que quiere es saber como poder realizar cada uno de los pasos para crear este servicio, esto es lo que sigue…
Lo primero que necesitamos es abrir AUTOMATOR y seleccionar Crear nuevo servicio en el asistente que nos aparecerá, tal y como se muestra en la siguiente imagen:

El asistente de Automator
Esto nos abrirá un nuevo flujo de trabajo en el que solamente veremos un cuadro en la parte superior. Dicho cuadro sirve para especificar que tipo de datos recibirá el servicio y desde que aplicacion(es) aunque en este caso, no precisamos marcarle ninguna entrada de datos ya que lo haremos todo desde las siguientes acciones que insertaremos, así que tendremos que dejar, en los desplegables, marcadas las opciones «sin datos de entrada» y «en cualquier aplicación», al igual que no marcaremos que se reemplace el texto seleccionado, tal y como muestra la siguiente captura:

Sin entrada de datos
Ahora vamos a proceder a componer el flujo de trabajo. Si no está familiarizado con Automator verá que es muy fácil ya que solamente se trata de arrastrar la acción que queremos, de la parte izquierda al flujo de trabajo, en la derecha, como muestra la siguiente imagen:

- Insertando la acción en el flujo de trabajo
Lo primero que haremos será incorporar al flujo de trabajo la acción de “Solicitar Texto” mediante la cual habilitamos que sea posible introducir el comando YubNub.
NOTA DE COMILLAS: Para localizar las acciones en la parte derecha, si no nos aclaramos o no nos parece cómodo buscarlas en las categorías en las que están divididas, también podremos hacerlo utilizando un pequeño buscador que hay sobre ellas.
Tras tener preparado el diálogo que se mostrará, el siguiente paso es arrastrar la acción “Ajustar el valor de la variable” en la cual tendremos que pinchar con el ratón sobre el contenido del desplegable para que nos solicite un nuevo nombre de variable. Puede poner el que quiera pero recuerde que las siguientes veces que necesite usar esa variable deberá escribirlo tal cual. Si quiere seguir el ejemplo al pié de la letra, el nombre que yo he usado es “result”.
Y por último solamente tendremos que añadir una acción más al flujo de trabajo: “Ejecutar Applescript” que es, realmente, la que se encarga de que lo anterior tenga un sentido.
Su función es bastante simple: Recuperar el texto escrito en la primera ventana, gracias a la y concatenarlo a la dirección de YubNub para efectuar la búsqueda indicada en Safari. Como he dicho otras veces, puede usarse cualquier otro navegador pero prefiero hacerlo con Safari por que es el que seguramente esté en todos los MAC.
El applescript debe estar exactamente igual que aquí:
Pues ahora que ya sabemos como añadir las acciones comencemos a trabajar:
Lo primero que haremos será incorporar al flujo de trabajo la acción “Solicitar Texto” mediante la cual habilitamos que sea posible introducir el comando YubNub.
Para localizar las acciones en la parte izquierda, si no nos aclaramos o no nos parece cómodo buscarlas en las categorías en las que están divididas, también podremos hacerlo utilizando un pequeño buscador que hay sobre ellas.
Tras tener preparado el diálogo que se mostrará, el siguiente paso es arrastrar la acción “Ajustar el valor de la variable” en la cual tendremos que pinchar con el ratón sobre el contenido del desplegable para que nos solicite un nuevo nombre de variable. Puede poner el que quiera pero recuerde que las siguientes veces que necesite usar esa variable deberá escribirlo tal cual. Si por el contrario, quiere seguir el ejemplo al pié de la letra, el nombre que yo he usado es “result”.
Por último solamente tendremos que añadir una acción más al flujo de trabajo: “Ejecutar Applescript” que es, realmente, la que se encarga de que lo anterior tenga un sentido.
Su función es bastante simple: Recuperar el texto escrito en la primera ventana, gracias a la variable y concatenarlo a la dirección de YubNub para efectuar la búsqueda indicada en Safari. Como he dicho otras veces, puede usarse cualquier otro navegador pero prefiero hacerlo con Safari por que es el que seguramente esté en todos los MAC.
El applescript debe estar exactamente igual que aquí:
1 2 3 4 5 6 7 8 9 10 11 12 13
| on run {result}
set LaDirecc to "http://www.yubnub.org/parser/parse?command=" & result
tell application "Safari"
activate
open location LaDirecc
end tell
end run |
Tras esto, solamente nos quedará guardar el servicio para poder utilizarlo a través del menú superior de cualquier aplicación (Tal y como marcamos en el primer cuadro del flujo de trabajo) PERO como en Snow Leopard es muy sencillo «rizar el rizo» vamos a darle una vuelta de tuerca más y le asignaremos una combinación de teclas para poder, a golpe de teclado, invocar el servicio de una rapidísima manera.
Para hacerlo tendremos 2 maneras de actuar:
Podremos hacerlo mediante el menú servicios en la barra superior, concretamente la opción»Preferencias de los servicios», o bien es posible realizarlo a través del panel de preferencias del sistema, entrando en teclado y en la ventana que aparece nos situaremos en la última pestaña «Funciones rápidas de teclado» y seleccionamos «servicios» en el cuadro de la izquierda. Cualquiera de estos dos caminos nos situarán en la misma ventana que es la que nos permitirá asignar (o modificar) una combinación de teclas a cualquier servicio, no solo al que acabamos de crear, sino a cualquiera de los que veamos en esa lista.

- Asignación de teclas a los servicios
Para asignar las teclas, tendremos que pinchar con el ratón a la derecha del servicio. La verdad es que no es un campo que esté delimitado así que tendremos que hacerlo por aproximación tomando como ejemplo los que están en la lista y ya tienen una combinación de teclas asignadas (O la anterior captura, ya que la zona donde debemos pinchar con el ratón es la que está marcada con un circulo rojo).
En el ejemplo he añadido la combinación ALT+Comando+Ñ ya que es muy posible que sea un atajo de teclado que no esté en uso pero es posible añadir la combinación que queramos incluso aunque esté en uso ya, eso si, en el caso de que sea una combinación utilizada no funcionará siempre, evidentemente.
Y con todo esto, ya podremos disfrutar de la genialidad de YubNub con una combinación de teclas, casi de la misma forma que lo hacíamos con Quicksilver antes de que la actualización hiciese que el trigger se borrase del lanzador cada X tiempo.
leer más
Enviado por Alvaro Anaya M. sobre Oct 2, 2009 en Manuales | 23 comentarios
—————– Actualización del 18 diciembre 2009—————
He tenido que modificar el Script ya que la dirección del traductor ha cambiado, haciendo que no funcionase la anterior versión. Si ya tenias el servicio creado y este ha dejado de funcionar, puedes bajarte la nueva versión o modificar la direcc del traductor en tu Script, como prefieras. Si por el contrario es la primera vez que lees este artículo, puedes seguirlo sin problema dado que ha sido actualizado y todo está correcto.
—————————————————————-
Una de las características más útiles y menos conocidas de MAC es la del menú Servicios, integrado en la barra de herramientas de cada programa. Dichos Servicios son funciones que vienen «de serie» en el sistema y otras que se añaden con cada nuevo programa y que permiten interactuar con los contenidos que estemos visualizando dependiendo del tipo que sean estos, del programa que estemos usando y de la función en si.
Esta carácterística incluye funciones como:
- Resumir: Permite, a partir del texto seleccionado, hacer un resumen del contenido a modo de preview. Para comprender esta opcion basta con pensar en el pequeño avance que nos muestran de las noticias algunos feeds o algunas Webs.
- Crear nuevo correo: Inserta el texto seleccionado en un nuevo correo
- Buscar en Google: Eso mismo, busca la seleccion en Google
Estas son solamente unas pocas de las muchísimas funciones que pueden aparecer en dicho menu y, a pesar de que existen todo tipo de ellas, hay una que no viene por defecto y que es realmente útil: La traducción.
Lo cierto es que, al menos en mi caso, he ido sustituyendo dicha función por la de búsqueda en el diccionario, que es otro de los servicios que viene por defecto en el sistema y que permite ver la definición de una palabra (evidentemente, como cualquier otro diccionario) pero eso, en ocasiones no resulta suficiente, sobre todo si no es una palabra lo que deseamos traducir y es una expresión o un texto completo.
Por otro lado, desde hace unos dias estoy disfrutando de las nuevas funcionalidades de Snow Leopard y una de las mejoras es precisamente la personalización del menu Servicios por lo que animado a causa de esto, he decidido crear mi propio servicio de traducción a través del Traductor de Google de forma que, solamente con el sistema y sus opciones, es decir, sin software de terceros ni ningún tipo de añadido salvo la conexión a internet, veremos como crear este servicio e incluso la forma de ejecutarlo con una combiancion de teclas para evitar movernos por los menús, ganando aún mas rapidez si cabe. Comencemos….
Para que todo sea mas sencillo, vamos a recurrir al programa ideado para hacer las cosas mas sencillas: AUTOMATOR.
Abrimos automator y seleccionamos la opción para crear un nuevo servicio.

El asistente de Automator
Ya dentro de la ventana para componer el flujo de trabajo, veremos en la parte superior de la columna derecha un pequeño cuadro con algunas opciones, en las que tendremos que decirle que nuestro servicio va a recibir TEXTO y lo hará DESDE CUALQUIER APLICACIÓN, tal y como vemos en la siguiente captura:

- Creando el servicio de Traducción
Una vez especificado el tipo de datos y de donde los recibirá, tendremos que situarnos en la columna de la izquierda y arrastrar hacia la de la derecha la acción EJECUTAR APPLESCRIPT, tal y como muestra la siguiente imagen:

- Insertando la acción en el flujo de trabajo
Y ahora solo nos falta el código, que a fin de cuentas es lo que hace que el servicio funcione y como habréis intuido a juzgar por la acción incorporada al flujo de trabajo, se trata de un pequeño applescript (Y lo de pequeño esta vez va en serio 🙂 ). Así que dentro de la acción que acabamos de arrastrar al flujo de trabajo de nuestro futuro servicio tendremos que tener escrito estas líneas que siguen, tal cual aparecen aquí debajo.
Código applescript a incluir:
1 2 3 4 5 6 7 8 9
| on run {input}
tell application "Safari"
activate
set LaDirecc to "http://translate.google.com/#en|es|" & input
open location LaDirecc
end tell
End run |
Básicamente la función de estas lineas es unir la selección texto que hayamos indicado a una URL, concretamente la del traductor de Google para que realice directamente la traducción del texto con dicho servicio. Como instrumento para realizar la acción he optado por Safari ya que viene por defecto en el sistema por lo que seria raro encontrarse un MAC sin él.
Tras realizar tal cual, todos los pasos solamente nos quedará guardar el trabajo realizado en Automator para tener listo nuevo nuevo servicio y aunque una vez guardado ya será totalmente funcional, aun podremos mejorarlo asignándole una combinación de teclas para que sea más cómodo. Eso si, es importante guardarlo con un nombre claro ya que será el que aparezca en el menú.
Hagámos una pequeña prueba, para ver si hemos seguido todos los pasos de forma correcta. Si abrimos cualquier aplicacion que muestre texto, ya sea un navegador Web, un procesador de texto, cualquier otro programa o documento en el que podamos hacer la unica parte totalmente necesaria que es, SELECCIONAR UN TEXTO y nos dirigimos al menú superior del sistema donde veremos algo similar a la siguiente captura, salvo en el nombre del programa (a no ser que también haya abierto el mismo que en ese caso, será todo idéntico):

- Pasos para ejecutar el servicio
Para que no haya confusión alguna, iré explicando cada uno de los pasos para ejecutar el servicio.
- Seleccionamos el texto. En la imagen he usado TextEdit pero servirá cualquier otra aplicación, documento o correo.
- Iremos a la entrada del menú servicios que siempre estará en el barra superior de la aplicación en la que estemos. En el caso de Snow Leopard también podremos acceder a los servicios invocando el menú contextual sobre el texto seleccionado.
- Veremos un nuevo menú categorizado según el tipo de datos con el que trabajamos. En este caso, dentro de la categoría texto aparecerá un servicio que tendrá el mismo nombre con el que hayamos guardado el flujo de trabajo de automator. Al pinchar sobre él, se ejecutará el servicio que, en este caso, abrirá una nueva ventana de Safari con la traducción del texto que hayamos seleccionado previamente.
A pesar de que ya hemos creado un servicio completamente operativo, a la par que realmente útil, si tenemos Snow Leopard como sistema podremos rizar el rizo un poquito más asignando una combinación de teclas que nos permita, tras seleccionar el texto, realizar la acción desde el mismo teclado. Para ello bastará con volver a sacar el menú de Servicios desde la barra de tareas superior e ir hasta la entrada que se muestra bajo la lista de servicios cuyo nombre es: Preferencias de los servicios. También es posible acceder a este menú mediante el panel de preferencias del sistema y entrando en la opción de teclado y ratón.

- Preferencias de los servicios
En esa misma ventana que visualizamos tendremos que buscar el nuevo servicio que hemos creado y tomando como referencia el resto de servicios que aparecen y que ya tienen una combinación de teclas asignadas, sabremos donde hacer doble click para agregarle un atajo de teclado a nuestra creación. En la anterior imagen se puede ver la combinación de teclas que he asignado en mi equipo al servicio de traducción recien creado. He optado por las teclas «Comando + Alt + G» ya que no es excesivamente dificil de recordar gracias a la G de google y existen muchas combinaciones que utilizan el uso de las teclas «Comando + ALT» así que no resulta muy rebuscada. Además hay que tener en cuenta que la combianción que asociemos no debe estar asignada ya a ninguna otra función y con más cuidado aún, en este caso que hemos creado un servicio común a cualquier aplicación por lo que es más difícil encontrar combinaciones vacías.
Un buen consejo para evitar problemas por combinaciones de teclas duplicadas es desactivar, en esa misma ventana, las combinaciones del sistema que no utilicemos. Por ejemplo, si el equipo es un portátil con Trackpad multitouch y usamos los gestos de 4 dedos para invocar Exposé o para mostrar escritorio, no es necesario tener habilitadas tambien las combinaciones de teclas para esas mismas tareas.
Ahora que ya tenemos también una combinación de teclas asignada a nuestro servicio, hemos terminado el trabajo y ya no tendremos que quedarnos con la duda de lo que significa ninguna palabra o texto, solamente por el hecho de que nos de pereza efectuar todos los pasos necesarios para realizar una traducción de la manera tradicional. Además no solo hemos aprendido algo realmente útil sino que hemos dotado al sistema de una nueva y potente característica sin recurrir a herramientas externas.
Por supuesto, utilizando este mismo sistema podremos crear nuevos servicios en el sistema, siendo como muchas otras veces, la única limitación, la que nos impone la falta de ideas e imaginación que le echemos.
Ahora bien, si no le funciona el script o no tiene ganas de seguir los pasos, siempre puede optar por la manera rápida que es descargarse el flujo de trabajo del servicio desde ESTE ENLACE y copiándolo en una de las 2 siguientes rutas dependiendo de lo que quiera:
Para que todos los usuarios del sistema tengan acceso al servicio (Requiere autenticación):
Disco principal/sistema/Librería/Servicios
Si quiere tener el servicio solo para el usuairo actual, la ruta es:
Home del usuario/Librería/Servicios
Una vez esté nuestro servicio en cualquiera de esas 2 rutas, ya podremos disfrutar de su versatilidad desde el menú servicios.
En el caso de que haya optado por crear el servicio paso a paso en vez de descargándolo ya hecho, cuando lo guarde con Automator, la ruta donde estará ubicado es la del usuario actual, es decir, solo estará disponible para el usuario con el que lleve a cabo los pasos. Eso si, siempre podrá moverlo a mano a la otra ruta para que todos los usuarios que utilicen el sistema disfruten de él.
leer más
Enviado por Alvaro Anaya M. sobre Sep 19, 2009 en Manuales | 8 comentarios
Hace tiempo que donde trabajo, se está utilizando el Office Communicator 2005 como herramienta de comunicación interna de la empresa y la verdad es que resulta muy útil y «cómoda» sobre todo para no estar siempre colgado del teléfono cuando necesitas hablar con personas de otros departametos o incluso de otras sedes pero cuando tienes muchos contactos agregados, comienza a ser como todo programa muy cargado, es decir, poco práctico y lento.
En mi caso, opté por agrupar las personas por departamentos pero ha llegado un momento en el que tampoco sirve como solución cuando quieres rapidez, y más si estás acostumbrado a un buen lanzador como QUICKSILVER en MAC, por eso he recurrido a esta combinación de script y lanzador de aplicaciones en el escritorio Windows del trabajo.
El primer paso era tratar de automatizar, en un script, la apertura de un chat, al menos, con las personas que más suelo utilizarlo que, normalmente son un grupo de 5 o 6, no más. Con este paso ya me encontré el primer problema ya que, por más que busqué, no apareció nada de información sobre parámetros para pasar por linea de comandos al communicator 2005 pero como se podría decir que soy bastante testarudo, mediante el método de ensayo y error, testeando los comando de programas similares he llegado conseguir abrir un chat con una persona a través de la linea de comandos de la siguiente manera:
COMMUNICATOR.EXE sip:direccion@correo.com
En teroria el parámetro sip:direccion, deberia de establecer una llamada sobre VoIP pero dado que en mi empresa esto no está configurado, no funciona así. Es más, con dicho parámetro me abre un chat con la persona cuya dirección sigue al sip:. Es de suponer que esto funcione de forma similar en otras instalaciones de Office Communicator 2005 pero si veis que no es así, buscaremos una solución
Tal cual está, ya tiene cierta utilidad porque añadiéndole un par de líneas tendriamos un pequeño script mediante el cual podremos con un simple clic inciar un chat, así que completemos un poco más el script para que sea útil
1 2 3 4
| @ECHO OFF
CLS
CD "C:\Program Files\Microsoft Office Communicator"
COMMUNICATOR.EXE sip:direccion_correo @dominio |
Evidéntemente cambiariamos direccion_correo@dominio por una dirección de correo válida de la empresa interconectada con el communicator.
Como hemos dicho, hasta aquí ya estaría bien ya que un script así es iniciable con el ratón y con situarlo en el escritorio bastaria para tenerlo a mano pero si son muchas las personas que queremos tener accesibles de esta forma, nos va a ocurrir el mismo problema que teníamos con ellas en el communicator: demasiados botones, demasiadas personas y lentitud para buscar una entre tantas.
Para volver a evitarlo y conseguir que este manual sea realmente útil, necesitamos recurrir a una pequeña aplicación similar al ya citado QUICLSILVER de MAC solo que en esta ocasión para Windows, un lanzador de aplicaciones. A pesar de que existen varias alternativas, nos vamos a quedar con EXECUTOR ya que puede tenerse funcionando correctamente sin falta de ser administrador de equipo (No es necesario realizar una instalación).

Aspecto del cuadro de executor
Esta aplicación, una vez está arrancada, no es visible al usuario. Para «activarla» tendremos que presionar una combinación de teclas que, en mi caso, para tener la misma que en el MAC, he usado las teclas CTRL + SPACE. Cuando se pulsa dicha combinacion aparece un pequeño cuadro de texto en el que escribiremos el nombre de la aplicacion que queramos lanzar y se ejecutará.
Solamente con esta característica ya se gana un tiempo maravilloso pero lo mejor es que se pueden personalizar los comandos de la aplicación llegando ser realmente útil y comodo realizar muchas de las acciones cotidianas aunque en este caso solamente configuraremos el comando necesario para abrir un chat con la persona que queramos por communicator.
Ahora que ya he presentado el programa, vamos manos a la obra de nuevo:
Descargamos el EXECUTOR de la PAGINA OFICIAL.
Una vez descargado, tendremos que configurar 2 puntos para llamar a nuestro compañero de trabajo.
El primero es más bien las teclas que queremos tener para invocar el communicator y seleccionar que se inicie cuando arranquemos Windows. Esto se haria en el punto marcado en la siguiente captura:

Configuracion 1 del EXECUTOR
Executor ya funcionaria sin más pero nos falta aún la parte que interesa para este artículo, llamar al communicator y que nos abra un chat con la persona indicada. Esto lo conseguiremos creando un nuevo comando para el executor que, en cuanto lo escribamos vaya directamente a ejecutar el SCRIPT que le indiquemos. así que vamos manos a la obra:

Crear un nuevo comando en EXECUTOR
Para crear el nuevo comando nos situaremos en la pestaña «Keywords» y pulsaremos la tecla «INS» del teclado, lo que nos situará sobre el primer cuadro de texto llamado también «Keywords» y en el que escribiremos el nombre por el que queramos invocar el comando o script. En el caso de la captura he escrito compañero pero si tenemos en mente crear varios comandos para abrir chats, sería recomendable asignarles los nombres de las personas como por ejemplo, Armando, Sonia, Jandro, como salen en los cuadros de la parte superior de la captura.
En el siguiente cuadro de texto tendremos que escribir la ruta completa hasta el script previamente creado.
Una vez hecho esto ya estaría preparado para ser invocado de forma rápida, cómoda y sencilla aunque se puede rizar el rizo asignándole una «Hotkey» en esa misma ventana, es decir, un atajo de teclado para invocar dicho comando o incluso cambiar el icono que tendrá el comando en executor cuando lo escribamos aunque no es necesario y lo veremos en otro artículo.
Y ya está, en cuanto apliquemos los cambios realizados ya podremos hacer la prueba y disfrutar de la comodidad. Si habeis dejado la configuración igual que yo los pasos serían los siguientes:
Desde cualquier ventana, pantalla, programa, es decir, esteis donde esteis, al pulsar:
CTRL + SPACE
Se abrirá una pequeá ventana similar a esta:

Aspecto del cuadro de executor
Dentro de ella, tendremos que escribir el nombre que le hayamos dado al comando. Si habeis dejado el mismo que puse en el ejemplo seria: compañero. Realmente con que comenceis a escribirlo ya deberiais ver que os lo va autocompletando a la vez que muestra un icono, una vez veais la palabra tal y como la introdujísteis en la configuracion, solamente tendreis que apretar el intro para que el SCRIPT inicial se ejecute.
Ya veis que sencillo resulta tener todos los programas, scripts, incluso ubicaciones como el panel de control, mi pc o mis documentos en dos sencillos pasos de teclado.
Os aconsejo encarecidamente que echeis un vistazo a los comandos que vienen incluidos en la lista del propio EXECUTOR ya que os servirán de guía para crear otros nuevos. Además tened en cuenta que tambien admite parámetros y páginas WEB por lo que podréis crear comandos compuestos, sin mucha complicación como algunos de los que tengo yo aunque la elaboración de los mismo la veremos en otro manual más adelante
Un saludo.
leer más
Enviado por Alvaro Anaya M. sobre Ago 30, 2009 en Scripts | 9 comentarios
Este artículo es el primero para realizar unas acciones concretas. En este caso lo haremos mediante applescript y en el siguiente se realizarán las mismas acciones con automator.
Si ya está familiarizado con el uso de AppleScript y conoce su metodología, prácticamente podría saltar directo al script ya que el artículo, en su mayoría, trata de explicar los conceptos básicos utilizados en el script.
Una de las maravillas del sistema OS X es la facilidad que ofrece para automatizar todo tipo de tareas y, como veremos en este pequeño manual, utilizando applescript, podremos con un simple clic de ratón abrir una serie de carpetas, scripts, programas o incluso que nos pregunte que es lo que queremos abrir. Resulta ideal, sobre todo cuando tienes varios proyectos en marcha haciendo que las carpetas de trabajo sean varias, en diferentes ubicaciones y los archivos no siempre sean los mismos a utilizar ya que puede haber diferentes versiones de ellos.
Ahora que ya estamos metidos en situacion, concretemos un poco más el caso. Para que sea algo realista, voy a basar el artículo en un caso real que me hizo recurrir a las maravillas de applescript para abrir una serie de carpetas con los archivos de un proyecto y tras ello abrir la ultima version del script en el que estuviera trabajando. Respecto a las carpetas no hay mucho que decir ya que siempre serán las mismas pero respecto al script, si queremos que nuestra automatización sea práctica y no tengamos que modificarla cada vez que cambiemos de nombre el sctipt, (cosa que yo hago continuamente ya que añado la verison del mismo en el propio nombre del archivo) tendremos que recurrir a uno de los diálogos del sistema. Así pues, el objetivo es el siguiente…
Crear un Applescript con las siguientes características:
- Debe abrir 2 carpetas específicas (La carpeta de los archivos de prueba y la de los scripts)
- Abrir un archivo de código (Applescript también) cuyo nombre puede cambiar todos los días, incluso varias veces en el mismo día
Como puede ver, no es un guión nada complicado así que vamos manos a la obra, comenzando con la parte de las carpetas aunque antes, veamos un poquito de teoría…
Applescript tiene una amplia gama de posibilidades para referirse a carpetas y archivos. Estas son las siguientes:
- Referencias anidadas
- Referencia de ruta
- Referencias de alias
- Rutas Posix
- URLs
Cada una de las formas tiene su método y no siempre se pueden utilizar todas en cualquier punto del script o de cualquier forma aunque lo que si es posible es convertir unas en otras de forma sencilla y en este caso vamos a recurrir a 2 tipos para que el script resulte un poco más didáctico 😉 . Usaremos tanto las referencias de ruta como las referencias anidadas.
El método de referencia de ruta consiste básicamente en escribir la ruta completa desde su comienzo. En este caso en vez de usar el caracter «/» para separar los directorios, lo haremos tipo MAC mediante el caracter «:» para separar cada uno. Para asegurarnos de que queda totalmente claro, veamos un pequeño ejemplo sobre las rutas:
Para las personas procedentes de Windows esto sería una ruta común:
C:\Usuarios\alvaro\DropBox\Proyectos\Applescript\en_DESARROLLO\ARCHIVA2
Para quienes llegan de Linux o Unix la ruta tendría este aspecto:
Macintosh HD/Usuarios/alvaro/DropBox/Proyectos/Applescript/en_DESARROLLO/ARCHIVA2
Mientras que en los sistemas Apple, la ruta pasaría a ser así:
Macintosh HD:Usuarios:alvaro:DropBox:Proyectos:Applescript:en_DESARROLLO:ARCHIVA2
Teniendo en cuenta que el corazón de OS X es un UNIX, las rutas cuyo delimitador es la barra invertida «/» tambien serían válidas aunque en este caso nos vamos a basar en el tipo de ruta de MAC por defecto.
En cambio, las referencias anidadas, aun siendo una forma muy sencilla y lógica tambien, se basan en el concepto contrario, es decir, vamos anidando los items para formar la ruta PERO en sentido contrario. Mientras que en con las referencias de ruta vamos formando la estructura partiendo del inicio del disco hasta el directorio destino, en las referencias anidadas se hace al revés comenzando por el directorio en cuestion e indicándo que esta dentro de… y dentro de… y dentro de…. Veamos un ejemplo que, seguramente, resulte más aclarador que mis explicaciones:
Imaginemos la tenemos la siguiente ruta:
Macintosh HD/Usuarios/alvaro/Escritorio/samples/zona_pruebas/archiva2
Para referirnos a ella mediante referencias anidadas tendriamos que hacerlo de la siguiente manera:
...of folder "archiva2" of folder "zona_pruebas" of folder "samples" of desktop of folder "alvaro" of folder "usuarios"...etc
Dependiendo de donde este ubicada la ruta, tendríamos que seguir especificando los directorios o no. En este caso, una de las carpetas es el escritorio (Desktop), la cual es una de las carpetas reconocidas por el sistema por lo que podríamos terminar la anidación de elementos con un simple «of desktop» y de hecho, así se hará en el script.
Ahora que estoy seguro de que la primera parte del script no va representar ningún problema, vamos al grano con él, de manera que, en esta primera parte lo que haremos será abrir las 2 carpetas de trabajo necesarias:
1 2 3 4 5 6
| tell application "Finder"
set DirectorioDeTrabajo to folder "
Macintosh HD:Usuarios:alvaro:DropBox:Proyectos:Applescript:en_DESARROLLO:ARCHIVA2" as alias
open folder "archiva2" of folder "zona_pruebas" of folder "samples" of desktop
open folder DirectorioDeTrabajo
end tell |
Como se puede apreciar, en la segunda línea, aunque se puede ver claramente la estructura de carpetas, su objetivo no es abrirla sino guardarla en una variable llamada DirectorioDeTrabajo que luego, en la penúltima línea si abriremos mediante la orden «open folder». Esto no es obligatorio ni mucho menos pero nos resultará mucho más cómodo ya que asignándole la ruta como valor a dicha variable, cada vez que tengamos que hacer uso de toda esa concatenación de directorios para referirnos a la carpeta que apuntan, podremos hacerlo simplemente escribiendo al variable y más adelante es algo que nos vendrá muy bien para mantener «limpio» el script facilitando tanto su lectura y comprensión como su escritura.
Ahora que tenemos la parte de las carpetas, tenemos que escribir la parte que nos abrá el script. Como he dicho antes, en mi caso el script no es el mismo de un dia para otro. Incluso puede cambiar varias veces en el mismo dia ya que en el nombre incluyo la versión y muchas veces hasta alguna palabra que especifique más el punto donde se encuentra mi trabajo en dicho archivo. Esto hace que no pueda especificar un archivo concreto a abrir desde el script que iniciará todo a no ser que quiera cambiar cada dia mi script, cosa que haría que todo este sistema no fuese viable. Para solucionar este problema, la mejor manera es recurrir a uno de los diálogos del sistema para la apertura de archivos, que en este caso será el script que yo seleccione en el momento. Esto se consigue mediante la orden «choose file». Ahora bien, si me abre el diálogo de seleccion de archivo en una carpeta perdida o lejana a mi destino, haria de nuevo que este método no fuese más rápido o práctico que hacerlo todo a mano pro lo que vamos a personalizar un poco la orden…
choose file with prompt "Selecciona el SCRIPT DE TRABAJO" default location DirectorioDeTrabajo
Veamos que quiere decir cada cosa:
- choose file: Es la orden en sí misma para la apertura del diálogo de seleccion de archivo
- with prompt: es el parámetro encargado de añadir un pequeño mensaje en la ventana.
- default location: Es lo que nos permitirá abrir el diálogo de seleccion de archivo en el directorio que queramos.
Con esa simple linea hemos definido prácticamente todos los parámetros pero nos falta lo más importante y es que aún no le hemos dicho que es lo que hay que hacer con el archivo seleccionado por lo que hasta ahora esta parte del script no sirve de nada. Solucionémoslo…
En este caso de ejemplo, lo que queremos es automatizar la apertura de los elementos de trabajo. Estos elementos habíamos dicho que eran las dos carpetas anteriores y un script sobre el que estoy trabajando. Esta última parte, abrirá un script pero hay que tener en cuenta que puede ser aplicable a cualquier otro tipo de documento sobre el que estemos trabajando. De hecho, escrito de la siguiente manera, no tendríamos que cambiar nada del script para que funcionase con otros tipos de documentos como archivos de pages o numbers, de word o excel, de música…etc etc ya que el método a seguir será que Finder abra el documento, sin más. Esto hace que para abrirlo, él solito busque la aplicación por defecto para abrir el tipo de documento que sea seleccionado en el diálogo o ventana de selección de archivo.
tell application "Finder" to open (choose file with prompt "Selecciona el SCRIPT DE TRABAJO" default location DirectorioDeTrabajo)
Se puede apreciar también que esta linea sirve para cualquier otro tipo de documento al que queramos adaptar el script y además no es necesario que sea modificada ya que, al hacer uso de la variable antes mencionada DirectorioDeTrabajo, cuando se cambien las rutas en la primera parte del script, dicha variable tomará el nuevo valor por lo que la ventana invocada por esta linea se abrirá en la nueva ruta. Además es destacable tambien la sensación de limpieza que transmite el código usando la variable en lugar de toda la ruta.
Finalmente ya tenemos las dos partes por separado completamente explicadas por lo que vamos a proceder con el script completo:
1 2 3 4 5 6 7
| tell application "Finder"
set DirectorioDeTrabajo to folder "
Macintosh HD:Usuarios:alvaro:DropBox:Proyectos:Applescript:en_DESARROLLO:ARCHIVA2:" as alias
open folder "archiva2" of folder "zona_pruebas" of folder "samples" of desktop
open folder DirectorioDeTrabajo
open (choose file with prompt "Selecciona el SCRIPT DE TRABAJO" default location DirectorioDeTrabajo)
end tell |
Y con esto damos por finalizado el artículo y solamente recuerde que, para personalizar y adaptar este script a sus propósitos personales solamente tendrá que modificar 2 cosas:
- Las rutas de la primera parte (Añadiendo, eliminando o modificando las existentes)
- El mensaje del cuadro de diálogo (En el caso de que quiera seleccionar algo que no sea script 😉 )
También podría darse el caso de que lo que quiera abrir no sea un documento, es decir, que el objetivo del script sea simplemente abrir X aplicaciones. En ese caso, el script seria más sencillo aún ya que se podría suprimir la segunda parte del script y añadir una linea como la siguiente por cada una de las aplicaciones:
Si deseamos que se abra y quede visible en pantalla, por ejemplo la aplicacion TextMate:
tell application "TextMate" to activate
Si queremos que se abra pero que permanezca oculta:
tell application "TextMate" to open
Para no extender más aún el artículo, nos quedaremos con esta manera de referirse a las aplicaciones aunque es importante mencionar que no es la única forma de referirse a un aplicacion.
Y ya finalmente si, de la misma manera que mi script podria no ser el mismo de un dia para otro obligándome a recurrir a un diálogo para seleccionar el documento a abrir, puede recurrir a un diálogo para seleccionar la(s) aplicaciones a abrir. Para hacerlo, seria de la siguiente forma:
Cabe destacar tambien que al igual que el diálogo de selección de archivo, este otro para seleccionar aplicación dispone de varios parámetros para personalizarlo al gusto del usuario aunque eso sería ya un nuevo artículo 😉
leer más