El gran mundo de los scripts (II)
Señoras y señores, les presento el menú de gala de este Domingo: De primero tendremos ‘como controlar tu Mac a base de emails‘. Para degustar de primero habrá ‘abrir links en Safari‘, de segundo ‘controlar iTunes vía mail‘ y finalmente de postrecillo: ‘haz que hable tu Mac‘. ¡Qué aproveche!
Empecemos con el primero. Para poder controlar el Mac a base de emails habrá que preparar primeramente los scripts que queramos activar y luego establecer una reglas en Mail. Los scripts que queráis activar ya dependerán de vosotros, pero yo ésto lo había planeado para lo básico. Apagar el Mac, reiniciar, ponerlo en reposo o abrir/cerrar alguna aplicación. Supongo que si habéis leído el post de ayer sabéis hacer los scripts, pero os lo volveré a recordar:
Apagar: tell application “Finder” to shut down
Reiniciar: tell application “Finder” to restart
Poner en reposo: tell application “Finder” to sleep
Abrir app: tell application “Nombre de la app” to activate
Cerrar app: tell application “Nombre de la app” to quit
Si queréis, podéis empezar creando todos estos scripts y guardándolos (Archivo->Guardar como…), para ahora ponernos de lleno con las reglas de Mail.
Vale, abriremos Mail.app y nos iremos a las preferencias, seleccionamos arriba donde dice “Reglas”, le damos a añadir regla y a partir de aquí depende un poquito de cada uno. Yo os explicaré lo básico, y las cositas como ponerle coloritos ya lo haréis a vuestro gusto. Os digo los campos y lo que hay que poner:
- Descripción: como dice el nombre, ésto es para que sepáis de que va la regla.
- En el primer desplegable hay que seleccionar ‘todas’, para que sólo se active el script cuando se cumplan todas las reglas.
- -Asunto- -Contiene- ‘System’
- -Texto del mensaje- -Contiene- ‘Apagar’
Realizar las siguientes acciones:
- -Ejecutar AppleScript- y, a continuación, seleccionáis donde lo tengáis guardado.
Para aclarar estos conceptos, os pondré una imagen por si acaso.

Con estos conceptos anteriores, ya podéis crear las reglas que queráis para apagar, reiniciar, abrir aplicaciones y un largo etc.
Para neutralizar un poco la boca antes de ir con el segundo: ‘abrir links en Safari‘. Os pongo simplemente el script y a ver que montáis con él…
tell application “Safari” to open location “www.factormac.com”
Vamos con el segundo, ‘controla iTunes vía mail‘. Seguro que os podéis imaginar algo ya después del entrante, y sí, la técnica será la misma. Supongo que ya habéis jugueteado un poco con las reglas de Mail, y si no ¿a qué esperáis?, entonces simplemente os explico los scripts de iTunes. Eso sí, voy a variar un poco el formato de los scripts, ya que serán de más de un comando y más difíciles de visualizar en una línea.
Abrir iTunes y reproducir:
tell application “iTunes”
activate
play
end tell
Parar la reproducción:
tell application “iTunes”
stop
end tell
Anterior/Siguiente canción:
tell application “iTunes”
previous/next track
end tell
Yo creo que hasta aquí bien, ¿no? Pues vamos con uno un poco más complejo, seleccionar una lista de reproducción y reproducirla.
tell application “iTunes”
set the_playlist to user playlist “Nombre de la lista”
set view of front window to the_playlist
play the_playlist
end tell
Otro truquillo, si queréis reproducir la ‘Sesión Aleatoria’, bastará con teclear ‘Sesión Aleatoria’ en el nombre de la lista.
Y por último, estableceremos las reglas de Mail como queramos tenerlas, para que un simple mail, enviado desde cualquier dispositivo, nos cambie de canción o nos pare la reproducción.
¿Os ha gustado el primero y el segundo?, pues vamos con el postre: Un script para hacer hablar al Mac.
tell application “Finder” to say “lo que quieras que diga”
Si queréis que os hable en castellano podéis bajar una voz en castellano, por ejemplo la de Cepstral, y si no, en su defecto, pues os hablará en inglés.


Para hacer un trackback a este artículo, usa
Para seguir los comentarios de este artículo por RSS, usa 

14 comentarios
Wow, esto tiene muy buena pinta! Voy a ver si consigo manejar mi Transmission sin estar en casa (si, se que existe Clutch, pero…)
Jolín sí que tiene buena pinta esto, sí, pero yo debo ser demasiado profano en la materia -de hecho lo soy- porque acabo de probar lo de apagar el Mac con un e-mail y no chusca. Vamos, que supongo que he hecho algo mal, ¿podríais echarme una mano? Me he enviado un correo a gmail (cuenta que tengo en Mail, por supuesto) desde otro ordenador y nada de nada. A mi iMac, plim. Como he visto que no, he abierto Mail para ver si había llegado el mensaje y sí, allí estaba, asunto: System, texto: Apagar ¿Y ahora qué? ¿Qué complicao esto de dominar el mundo, no? :)
Desconocía totalmente la creación de estos Scripts y la verdad que pueden dar mucho juego, sobretodo con truquillos como estos. Pero como también comenta Fonsi, siguiendo todos los pasos y una vez que Mail ha recibido el correo, no ocurre nada…nos dejamos algún paso importante? Soy usuario de Tiger, así que no se si la versión de Mail tendría algo que ver. ¿Podría ser eso?
Vale lo siento mucho, ya tengo el fallo. Simplemente por lo que parece que cuando Mail recibe los mail al estar en html el contenido del mensaje no es solamente la palabra ‘Apagar’. Entonces si en lugar de poner ‘es igual a’, ponemos ‘Contiene’ y todo funciona a la perfección. :D
P.D.: Ya está cambiado en el post.
Genial, ahora si que funciona!!! Muchas gracias ;-P son realmente útiles estos post de programación, sobretodo para uno como yo que los conoce más bien poco.
Venga saludos!
Ok, oído cocina. Ahora toy en la Uni pero cuando llegue hoy a casa -espero que sea hoy..- lo pruebo. De todas maneras así a priori me asalta la duda del millón de gamusinos y que para mí le da sentido práctico a este ejercicio. Es decir -y pongo un ejemplo- si yo ahora me envio un mail (a una cuenta que tenga en Mail), con las consabidas condiciones y todo preparadito como muy bien nos ha explicado Marc, y suponiendo que me he dejado el iMac encendido en casa -por despiste o por lo que sea-, ¿el iMac va y se apaga el solito así sin más o tengo que ir yo a ayudarle? (es decir, tener que ir a casa para abrir Mail y que así se apague)
@Fonsi: Imagino que el archivo AppleScript al que llamamos con la regla de Mail tiene que existir…
@Fonsi La condición que todo funcione es que hayas creado el scripts (:P) y que este Mail.app abierto con la regla bien puesta. Si tu iMac cumple estas dos condiciones, desde la Uni lo puedes apagar sin problemas si te lo has dejado encendido por despiste :)
Gracias Santiago, por supuesto que el archivo AppleScript al que llamamos tiene que existir, y existe en mi caso (lo tengo bien guardadito en Documentos). Como digo, ya lo probaré en casa y os comentaré qué tal me ha ido, y sobretodo, si funciona del modo en que yo espero que funcione :-)
Gracias Marc. Wow, esto sí que es rapidez. Seguid escribiendo artículos tan interesantes como éste y seguiréis teniendo fiel audiencia. Saludos!
Copio y pego el codigo que has puesto, por ejemplo para iniciar iTunes y cuando lo intento guardar me da el error de la imagen, y se me queda marcada las Comillas.
Bueno parece que los comentarios no admiten imagenes, pues te la describo.
“Se esperaba expresión, propiedad o forma clave, etc. pero se ha encontarado identificador desconocido.
@Cristo Buenas!, y gracias por comentar! Lo acabo de probar y tienes razón, al copiar/pegar se copian las comillas en cursiva (aunque yo no haya usado). Simplemente insértalos manualmente y todo irá bien :)
Muy interesante, de veras. Supongo que la pregunta más obvia es cómo pasarle argumentos o parámetros a esos scripts. Es decir, tal como se ha explicado, si quiero poder abrir y cerrar 20 programas diferentes, necesitaré 2*20=40 scripts y 40 reglas en el correo… no es muy escalable.
Lo que me gustaría sería tener un solo script para abrir un programa, un solo script para cerrarlo y dos reglas (una para abrir programas y otra para cerrarlos). El funcionamiento de la regla entonces debería ser: Si el asunto del mensaje contiene “Abrir” entonces lanzo el script de abrir programas y le paso como parámetro el cuerpo del mensaje, por ejemplo, donde se especificará el nombre del programa a abrir.
No se si me habré explicado de forma clara… pongo otro ejemplo: imagina que estoy en el trabajo y estoy un poco ocioso. Me pongo a navegar por internet y veo enlaces que quiero ver en casa… entonces me gustaría enviarme un correo a mi mismo especificando a Safari que abriese una URL… pero una URL que especifico en el propio correo, no una prefijada en el script. ¿Es esto posible?