Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
AppleScript
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Ficha de lenguaje de programación |nombre = AppleScript |logo = <!-- Ejemplo.png --> |tamaño_logo = |captura = |tamaño_captura = |pie = |extensiones_comunes = .scpt, .scptd, .applescript <!-- Extensiones en las que comúnmente se encuentra los archivos del lenguaje --> |paradigma = <!-- Paradigma de programación --> |año = 1993<!-- Año de aparición --> |diseñador = <!-- Autor original --> |desarrollador = [[Apple]] <!-- Quien desarrolla el lenguaje --> |última_versión = 2.2.1<!-- Nombre y/o número de la última versión liberada, ej: 3.5.3 --> |fecha_última_versión = <!--{{fecha de lanzamiento|DD|MM|AAAA}} Fecha de la última versión liberada --> |última_versión_beta = <!-- Última versión en pruebas --> |fecha_última_versión_beta = <!--{{fecha de lanzamiento|DD|MM|AAAA}} Fecha de la última versión beta liberada --> |tipo_dato = [[Tipado dinámico|dinámico]]<!-- Sistema de tipo de dato. ej: fuerte, dinámico, ... --> |implementaciones = |dialectos = |influido_por = [[HyperCard]] <!-- Qué lenguajes le han influido --> |ha_influido = <!-- Qué lenguajes ha influido --> |sistema_operativo = [[System 7]], [[Mac OS 8]], [[Mac OS 9]] y [[Mac OS X]] <!-- En qué sistemas operativos se ejecuta --> |licencia = <!-- Licencia bajo la cual está disponible el lenguaje --> |web = http://developer.apple.com/applescript/ <!-- http://web.archive.org/web/http://www.ejemplo.com --> }} '''Applescript''' es un [[lenguaje de programación]] desarrollado por [[Apple Inc.|Apple]] y diseñado para su ejecución bajo los sistemas [[Mac OS]]. Genéricamente, '''Applescript''' es la palabra usada para designar el entorno de Scripts de Mac OS, pensado para operar en paralelo a la [[GUI]]. == Historia == El proyecto Applescript fue una rama derivada del proyecto [[HyperCard]]. HyperCard contenía un lenguaje de programación basado en la lengua Inglesa llamado [[HyperTalk]], que podía ser usado para incluir contenido lógico en un programa de HyperCard. Los ingenieros de Apple pensaron que podría diseñarse un lenguaje de scripts similar para ser usado con cualquier aplicación, y el proyecto Applescript dio comienzo. MacOS necesitó profundos cambios y mejoras para implementar Applescript. Muchos de estos cambios se publicaron con el lanzamiento del sistema 7, principalmente el concepto del [[Apple Event]]. Applescript compitió para atraer la atención de los desarrolladores con otras nuevas tecnologías que fueron lanzadas al mismo tiempo ([[Baloon help]], [[Publish and Subscribe]], etc.). Para algunas de las aplicaciones, Applescript fue la tecnología más difícil de implementar, requiriendo que se reescribieran grandes porciones de código de bajo nivel de las mismas, e incluso el propio marco de aplicación de Apple, [[MacApp]], no soportó los Apple Events durante algún tiempo. El lanzamiento fue en octubre de 1993 como parte del sistema 7.1.1 (La primera gran actualización del sistema 7). [[QuarkXPress]] (Versión 3.2) fue una de las primeras grandes aplicaciones que soportó Applescript, y como resultado, Applescript fue ampliamente adoptado en los segmentos de publicación del mercado de Apple. Aunque es discutible, la razón por la cual la plataforma Mac se mantuvo como líder de mercado tras la publicación de QuarkXPress y otras aplicaciones para la plataforma [[Microsoft Windows]], fue que era la única que soportaba la automatización de flujos de trabajo complejos. El paso hacia [[Mac OS X]] y su marco [[Cocoa]] ha significado una mejor implementación de Applescript. Las aplicaciones Cocoa ofrecen compatibilidad con Applescript de forma básica sin ningún esfuerzo por parte del desarrollador, y pueden alcanzar niveles profundos de compatibilidad con un poco de inversión de tiempo del desarrollador. [[AppleScript Studio]], publicado con [[Mac OS X 10.2]], permite a los usuarios programar aplicaciones enteras usando Applescript y objetos Cocoa. == Conceptos Básicos == Applescript fue concebido principalmente como un lenguaje de programación de scripts, ofreciendo a los usuarios una herramienta inteligente de control y permitiendo la comunicación entre diferentes aplicaciones. Los sistemas anteriores al sistema 7 poseían un modelo rudimentario de Evento con el que se podían ejecutar un número fijado de eventos de bajo nivel, como "tecla pulsada" o "botón de mouse pulsado". Cada aplicación era responsable de la gestión y traducción a acciones de alto nivel que tuvieran algún sentido para el usuario, como "Ejecutar la opción de menú Pegar". En muchos casos, el mismo evento contenía tanto el concepto de acción (hacer clic) como las instrucciones para su ejecución (cuando se haga clic, ejecutar la opción Pegar). La implementación de Applescript requirió al desarrollador la separación de la acción de la ejecución, un trabajo al que Apple se refirió como "Factoring". Los programadores fueron animados a escribir dos maneras distintas de manejo de los eventos, una para el manejo de eventos de bajo nivel (clics, pulsaciones de teclas, etc.) y otra para eventos de alto nivel (Apple Events). == Applescript en Mac OS X == En Mac OS X, Applescript es mucho más sencillo de implementar para los desarrolladores, particularmente para las aplicaciones desarrolladas en Cocoa. A diferencia de Mac OS donde los eventos son procesados por las aplicaciones, bajo Cocoa los eventos son transformados a una instrucción de alto nivel por el objeto NSApplication, y luego dirigido a un objetivo correcto. Esto significa que todas las aplicaciones de Cocoa llevan el "Factoring" hecho, el programador normalmente no escribe nada sobre el manejo del evento y solamente debe escribir cómo responderá la aplicación a los procesos que el evento solicite. Otra importante ventaja es que los objetos Cocoa se nos presentan como estándares de manera que todos pueden acceder a ellos directamente. Bajo Cocoa, Applescript es mucho más "ligero"; el motor de scripts interpreta el script, traduce los nombres de objeto a su formato interno y luego los manda a la aplicación objetivo. los conceptos ttecnologics que son? son necesidad,clasificación etc. == La metáfora del "Lenguaje natural" == Mientras que los Apple events son una manera de enviar instrucciones a las aplicaciones, Applescript es un lenguaje específico para generar Apple events. Manteniendo la tradición de Mac OS de sencillez de uso, el lenguaje Applescript está diseñado basándose en la metáfora del "lenguaje natural", de la misma manera que GUI está apoyado en la [[metáfora de escritorio]]. Los programas de Applescript son generalmente leíbles y editables por cualquiera. Está basado en el lenguaje HyperTalk de HypeCard, y mejorado para que no solo pueda referirse al mundo de éste, sino que teóricamente puede referirse a cualquier documento. Para este fin, el equipo de Applescript introdujo el nuevo [[AppleEvent Object Model]] (Modelo de objetos AppleEvent o AEOM), el cual definía los objetos que cualquier aplicación conocía. Generalmente AEOM definía un número determinado de objetos, como "documento" o "párrafo" y acciones que se podían hacer con ellos, como "cerrar" o "copiar". El sistema también definía las maneras de referirse a las propiedades de los objetos, de manera que se pudiera señalar al "tercer párrafo del documento 1", o al "color de la última palabra de la ventana activa". AEOM utiliza un diccionario para asociar los Apple Events a objetos comprensibles por las personas, permitiendo la traducción en ambos sentidos entre Applescript y los Apple Events. Para saber que elementos de una aplicación pueden ser objeto de scripts, se pueden consultar dichos diccionarios (en [[Xcode]] y el editor de scripts, por ejemplo). == Sintaxis == === Hola Mundo === [[Archivo:Hola Mundo AppleScript.png|Resultado obtenido al ejecutar el programa.|derecha|marco]] El típico Hola Mundo se escribe en AppleScript con el siguiente código: <syntaxhighlight lang="applescript"> display dialog "¡Hola mundo!"</syntaxhighlight> El resultado obtenido al ejecutar el script es una nueva ventana como la que aparece en el margen. === Comentarios === Hay dos tipos de comentarios en AppleScript: * La sintaxis ''(* cuerpo del comentario *)'' permite escribir comentario en múltiples líneas. * El indicador ''--'' sirve para escribir comentarios de una sola línea. <syntaxhighlight lang="applescript"> --Este comentario sólo puede ocupar una línea #Este comentario sólo puede ocupar una línea (* En cambio con este, podemos usar múltiples líneas*) </syntaxhighlight> Adicionalmente también podemos iniciar el script con la línea ''#!/usr/bin/osascript'' para poder ejecutar el [[archivo de texto]] como un ejecutable de [[Unix]]. === Variables y tipos de datos === Las variables no necesitan ser declaradas y no están fuertemente tipadas. Para asignar a una variable un valor determinado se pueden usar dos métodos: <syntaxhighlight lang="applescript"> set nombreDeLaVariable to valorDeLaVariable --o copy valorDeLaVariable to nombreDeLaVariable </syntaxhighlight> El nombre de las variables no es [[Case sensitive|sensible a mayúsculas]], por lo tanto ''mivariable'' y ''MiVariable'' son equivalentes. Los nombres de las variables pueden contener letras de la ''a'' a la ''z'', excluyendo la ''ñ'', números y el carácter _. Los tipos básicos en AppleScript son: * Número * Texto: Es una serie de caracteres Unicode * Registros: es un conjunto ordenado de etiquetas con un valor asociado. * Lista: Es un conjunto ordenado de valores, no necesariamente del mismo tipo. Ejemplos de estos tipos son: <syntaxhighlight lang="applescript"> --Booleanos: set verdad to true set falso to false set numero to 10 --numero es de tipo Número set texto to "Esto es un texto" set lista to {valor1, valor2, valor3} --Los distintos valores están separados por comas set registro to {etiqueta1 : valor1, etiqueta2 : valor2} -- La etiqueta es un identificador único que precede al valor </syntaxhighlight> Los [[Tipo de dato|tipos de datos]] se pueden cambiar para ello se usa: <syntaxhighlight lang="applescript"> valorDeTipo1 as tipoFinal </syntaxhighlight> El valor que devuelve esta expresión es la representación de tipo ''tipoFinal'' del valor ''valorDeTipo1''. Por ejemplo: <syntaxhighlight lang="applescript"> 2 as text -- devuelve "2" true as text -- devuelve "true" "3.14" as number --devuelve 3.14 --También hay conversiones imposibles: "texto" as number --Provoca un error </syntaxhighlight> === Funciones === Las declaraciones de funciones en AppleScript, llamadas ''handlers'', pueden tener varias formas: <syntaxhighlight lang="applescript"> on nombreDeFuncion for parametric (* cuerpo de la función *) --si queremos que devuelva un valor: return resultado end nombreDeFuncion --Para llamar a la función se usa: nombreDeFuncion for unaVariable </syntaxhighlight> Se puede cambiar la palabra <code>for</code> por una de las siguientes :<code> about, above, against, apart from, around, aside from, at, below, beneath, beside, between, by, for, from, instead of, into, on, onto, out of, over, since, thru (o through), under</code>. Se pueden definer funciones con múltiples parámetros, usando para ello varias de las palabras listadas anteriormente, distintas para cada parámetro. <syntaxhighlight lang="applescript"> on fraccion for numerador over denominador return numerador / denominador end fraccion </syntaxhighlight> Las llamada a las funciones se puede hacer con los parámetros en distinto orden al declarado: <syntaxhighlight lang="applescript"> fraccion for 12 over 24 fraccion over 24 for 12 --Las dos llamadas son equivalentes y devuelven 0.5 </syntaxhighlight> <!--Buscar referencias:No hay diferencia funcional entre ninguna de las posibilidades, quedando la elección determinada por la facilidad para recordarlo según la función.--> Las funciones se pueden declarar también con parámetros posicionales: <syntaxhighlight lang="applescript"> on nombreDeFuncion(parametro1, parametro2) --cuerpo de la función end nombreDeFuncion </syntaxhighlight> Para que la función no necesite parámetros se escriben solamente los paréntesis, sin nombres entre ellos. También se pueden definir las funciones cambiando el <code>on</code> por <code>to</code> ==== Funciones especiales ==== Cuando se guarda un script como aplicación hay 4 funciones que se pueden declarar para que esta tenga ciertos comportamientos: <code>'''Run'''</code> Es la función que se llama automáticamente al ejecutar un script o al lanzar un script guardado como una aplicación. Se puede definir de dos maneras: # Si en el script hay escritas varios comandos, sin que estos estén dentro de declaraciones de funciones o de objetos script, la función <code>run</code> está ya declarada implícitamente. # Se puede definir explícitamente como una función cualquiera, aunque entonces no puede haber comandos fuera de declaraciones de funciones o de objetos script.: <syntaxhighlight lang="applescript"> on run args --comandos a ejecutar end run </syntaxhighlight> :El parámetro <code>args</code> es opcional y sirve para pasar parámetros al inicio, por ejemplo ejecutándolo desde la línea de comandos. <code>'''Open'''</code> El script recibe la orden de ejecutar la función <code>open</code> cuando el usuario arrastra archivos hasta el icono de la aplicación, pasándole como argumento una lista de alias a los archivos arrastrados. <syntaxhighlight lang="applescript"> on open nombresDeLosArchivos --comandos a ejecutar end open </syntaxhighlight> <code>'''Idle'''</code> Al guardar como aplicación se puede seleccionar la opción ''Dejar abierto''. Esto hace que cada 30 segundos, por defecto, se mande a la aplicación la orden de ejecutar la función <code>idle</code>. El tiempo que pasa entre las llamadas a la función se puede cambiar con el valor que devuelve la función: tiene que ser un entero y representa el tiempo en segundos entre llamadas, para el valor por defecto se devuelve 0. <syntaxhighlight lang="applescript"> on idle --comandos a ejecutar return numeroDeSegundos end idle </syntaxhighlight> <code>'''Quit'''</code> La función <code>quit</code> es llamada cuando la aplicación recibe la orden de cerrarse. Si durante la ejecución aparece el comando <code>continue quit</code> se sale de la aplicación, pero, si se encuentra un <code>return</code> o la función acaba antes de encontrarlo, no se cierra la aplicación. <syntaxhighlight lang="applescript"> on quit --comandos a ejecutar if condicion then continue quit else return end if end quit </syntaxhighlight> En este caso solo se saldría de la aplicación si <code>condicion</code> es verdadero. === Estructuras === ==== Condicionales ==== Al igual que en otros lenguajes de programación hay dos tipos de sentencias condicionales: <syntaxhighlight lang="applescript"> --Condicional simple: if condicion then --Sentencias a ejecutar end if --Condiciones compuestas: if condicion1 then --Cuerpo de la primera condición else if condicion2 then --Cuerpo de la segunda condición else --Cuerpo que se ejecuta si no se cumplen la condiciones anteriores end if </syntaxhighlight> ==== Bucles ==== Hay varios tipos de bucles: * Bucles que no evalúan una condición: <syntaxhighlight lang="applescript"> --Bucle infinito: repeat --Sentencias a ejecutar end repeat --Bucle que se repite n veces: repeat n times --Sentencias a ejecutar end repeat </syntaxhighlight> * Bucles que evalúan una condición: <syntaxhighlight lang="applescript"> --Bucle que se repite mientras la condición sea verdadera repeat while (condicion) --Sentencias a ejecutar end repeat --Bucle que se repite hasta que la condición pasa a ser verdadera repeat until (condicion) --Sentencias a ejecutar end repeat </syntaxhighlight> * Bucles que iteran con una variable <syntaxhighlight lang="applescript"> --La variable toma valores enteros desde uno inicial hasta el final repeat with i from primerValor to valorFinal --Sentencias a ejecutar end repeat --La variable toma los valores de cada uno de los elementos de la lista repeat with i in lista --Sentencias a ejecutar end repeat </syntaxhighlight> ==== Bloque ''tell'' ==== El bloque ''tell'' tiene dos variantes: <syntaxhighlight lang="applescript"> --Forma simple tell destino to accion_a_realizar --Forma compuesta tell destino --Sentencias a ejecutar end tell </syntaxhighlight> El bucle ''tell'' ejecuta las sentencias de acuerdo a las funciones y propiedades definidas en el objeto ''destino''. Este último puede ser de tipo ''application'', ''document'' o de tipo ''script'', normalmente definido por el usuario, entre otros. Por ejemplo se puede utilizar para abrir una nueva ventana del [[Finder]]: <syntaxhighlight lang="applescript"> tell application "Finder" make new Finder window end tell </syntaxhighlight> === Tratamiento de errores === Cuando se produce un error durante la ejecución de un script se para el proceso. Para evitarlo y poder continuar con la ejecución se usa el siguiente código: <syntaxhighlight lang="applescript"> --Método simple: try --Sentencias que pueden provocar errores end try --Método compuesto: try --Sentencias que pueden provocar errores on error descripcion number n --Sentencias a ejecutar si aparece un error end try </syntaxhighlight> Cuando aparece un error se pasa a ''error'' un texto que describe el error,''descripción'', y un número que identifica el tipo de error, n. Por ejemplo al ejecutar el código: <syntaxhighlight lang="applescript"> try "test" as boolean on error descripcion number n display dialog descripcion display dialog n end try </syntaxhighlight> La descripción del error es "No es posible convertir "test" en tipo boolean." y el número de error es -1700 También se pueden usar sentencias para marcar un error, lo que para la ejecución del código a no ser que esté dentro de bloque ''try''. La sintaxis es la siguiente: <syntaxhighlight lang="applescript"> error descripcionDelError number numeroDeError </syntaxhighlight> == Software == === Software para editar AppleScript === * '''[[Xcode]]''': Permite editar scripts como archivos de texto y tiene una plantilla definida para crear aplicaciones escritas en AppleScript.<ref name=xcodeApplescript/> * '''Editor AppleScript''': viene incluido en [[Mac OS X]] y permite editar script y guardarlos como aplicaciones independientes, script compilados o ficheros de texto. También permite ver las funciones y propiedades definidas en las aplicaciones que se pueden controlar mediante AppleScript. * Existen varios comandos para la Terminal de Mac OS X que permiten ejecutar scripts: ** '''osascript''' ejecuta un script:<ref name=osascript/> <br /><syntaxhighlight lang="bash" >osascript rutaAlScript </syntaxhighlight> <br /> O una sentencia: <br /><syntaxhighlight lang="bash" >osascript -e sentencia </syntaxhighlight> ** '''osacompile''' compila un script creando un archivo con extensión «.scpt»:<ref name=osacompile/> <br /><syntaxhighlight lang="bash" > osacompile rutaAlScript </syntaxhighlight> === Software controlable mediante AppleScript === {{AP|Categoría:Software controlable mediante AppleScript}} La mayoría de aplicaciones desarrolladas por Apple pueden ser manejadas con AppleScript, por ejemplo: * Finder * iTunes * Xcode * Safari == Referencias == {{listaref|refs= <ref name=xcodeApplescript>{{cita web|título=AppleScript en Xcode|url=http://www.macosxautomation.com/applescript/develop/index.html|fechaacceso=8 de julio de 2012|idioma=inglés}}</ref> <ref name=osascript>{{cita web|autor=Apple Inc.|título=osascript(1) Mac OS X Manual Page|url=http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osascript.1.html|fechaacceso=8 de julio de 2012|idioma=inglés}}</ref> <ref name=osacompile>{{cita web|autor=Apple Inc.|título=osacompile(1) Mac OS X Manual Page|url=http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/osacompile.1.html|fechaacceso=8 de julio de 2012|idioma=inglés}}</ref> }} == Bibliografía == {{cita web|autor=Apple|título=AppleScript Language Guide|url=https://developer.apple.com/library/mac/#documentation/AppleScript/Conceptual/AppleScriptLangGuide/|fechaacceso=6 de julio de 2012|idioma=inglés}} {{Control de autoridades}} [[Categoría:Software de Apple Computer exclusivo para Mac OS]] [[Categoría:Tecnología de Apple Inc.]] [[Categoría:Lenguajes interpretados]] [[Categoría:Software de 1993]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Buscar
Buscar
Edición de «
AppleScript
»
Añadir idiomas
Añadir tema