Actualización: he cambiado el código (que se puede descargar) para que también tenga en cuenta el caso en que la última línea contenga un párrafo vacío. Y he comprobado recientemente que funciona tanto en Leopard, Snow Leopard, como en Lion. (Mac OS X 10.5, 10.6, y 10.7, respectivamente.) También he actualizado el número de firmas que tengo en una nota al pie.
Mi colección de firmas con citas tiene un tamaño considerable —más de 150 en 2005(1)—, pero además tiene una parte fija, y una variable. Este artículo muestra cómo cambiar la parte fija de las firmas, respetando la variable, utilizando AppleScript.
Antes de que entrara en el IAA (Instituto de Astrofísíca de Andalucía, centro del CSIC), firmaba los mensajes de correo electrónico de esta forma:
––
Juan de Dios Santander Vela
Ingeniero en Electrónica, Desarrollador Palm OSWilliam Golding: Hay que reivindicar el valor de la palabra, poderosa herramienta que puede cambiar nuestro mundo, aún en esta época de satélites y ordenadores.
Lo que quería era cambiar la parte fija (la que pone mi nombre, mi titulación, y lo de “Desarrollador Palm OS”), dejando la frase última.
En primer lugar, el proceso ha sido más fácil, porque la cita era exactamente el último párrafo de las firmas, y por tanto fácil de aislar en un script.
Así, utilicé el siguiente script:
Cómo funciona
El script es todo lo que está entre “tell application” y “end tell”. Si habéis seguido los cursos de AppleScript de Julifos, sabréis que esa es la forma en que se indica qué aplicación es la que debe responder a los comandos que se van a enviar.
En primer lugar, un poco de notación. Los términos como tell, repeat, of, etcétera, que están en negrita, representan palabras clave de AppleScript. Los términos como return, content, paragraph, etcétera, que están en cursiva, representan objetos de la aplicación a la que nos estamos dirigiendo con tell, y pueden ser diferentes según la aplicación que estemos utilizando, aunque en muchos casos son equivalentes entre aplicaciones. Por último, los ´terminos sin ningún realce, como “firmas”, “elementos”, “contenido”, etc., son variables que hemos definido nosotros para poder hacer operaciones en el script.
Lo primero que hacemos es obtener todas las firmas, y las guardamos en una variable “firmas”. A continuación, contamos cuántas firmas hay, y guardamos el resultado en elementos.
A partir de ese momento, comenzamos un bucle en el que i va a ir tomando valores entre 3 y el número total de firmas (repeat with i in 3 to elementos). ¿Por qué empezamos en 3? Porque en mi caso las firmas 1 y 2 son firmas especiales, que no se ajustaban al modelo de firmas que queríamos cambiar.
Dentro de ese bucle, ¿qué es lo que hacemos? Pues obtenemos esa firma en particular (i-ésima), y la guardamos en “contenido” (set contenido to content of item i). De ese contenido, obtenemos el último párrafo, que sabemos que contendrá nuestra cita (set frase to the last paragraph of contenido). Y en las dos órdenes siguientes concatenamos nuestra nueva cabecera con la frase que habíamos recuperado, guardando el resultado en “nuevoContenido”. Por último, hacemos que la i-ésima firma sea la que acabamos de crear con nuestra nueva cabecera y la cita: set content of item i of signatures to nuevoContenido.
Espero que el script os resulte útil, o que al menos sirva para que entendáis mejor cómo manipular elementos de una aplicación con AppleScript.
Enlaces
- Archivo AppleScript comprimido: normalisesignaturesscpt.zip
Notas al pie
- Archivo AppleScript comprimido:El número de firmas que tengo ahora, actualizado a Enero de 2012, es de sólo 193. Sólo añado firmas nuevas cuando encuentro una nueva cita que me guste muchísimo más que las que ya tengo.↩

Comentarios
5 respuestas a «AppleScript: Cambiar centenares de firmas en un pis-pas»
No dejas de sorprenderme ¿eres desarrollador de Palm OS?¿y desarrollarás para el webOS?¿y qué aplicaciones tienes?
Saludos.
¡Hola, Zemlo! Si te fijas en la fecha del artículo, verás que de esto hace ya… ¡cuatro años y cuarto! Lo que ocurre es que cuando actualizas un artículo antiguo, si hace más de 24 horas de la última actualización, Twitter Tools también crea un tweet.
Pero respondiendo a tu pregunta: sí, fui desarrollador de Palm OS, y estuve cuatro años trabajando como programador primero, y luego director de un departamento dedicado a programar dispositivos móviles, pero cuando dejé esa empresa dejé de programar para Palm, porque había dejado de divertirme (ya ni recuerdo mi login a la web de desarrolladores de Palm… y tendría que buscar cuál es la web ;-)). También te puedo decir que todos los programas que he hecho han sido corporativos, no he hecho nunca ninguna utilidad.
De todas formas, para programar las Palm usábamos C, o un subconjunto reducido de C++ para no crear código demasiado complicado. Nuestros programas volaban en los 68000 a 8MHz de las Palm V (igual que los Mac originales), especialmente si los comparabas con los programas “Visual Basic” para Windows Mobile…
Programar para webOS se parece un poco más a programar widgets de Dashboard, pero usando la biblioteca de funciones Mojo, en lugar de JavaScript puro.
De todas formas, puesto que me voy a pillar un iPhone 3G S con T-Mobile, y estoy pendiente de un MacBook Pro 15″ de los nuevos, me parece que voy a programar más para iPhone que para webOS 😉
Jajajaja, tienes mucha razón. Me lanzo a leer y tan siquiera miro las fechas. Gracias por la respuesta. Tendré que aprender a programar ya que no veo mucho interés por la pre y si mucho por el iPhone.
[…] AppleScript: Cambiar centenares de firmas en un pis-pas […]
[…] AppleScript: Cambiar centenares de firmas en un pis-pas […]