AppleScript es un lenguaje de scripting creado por Apple Inc. que facilita el control automatizado de aplicaciones de Mac . Introducido por primera vez en System 7 , actualmente se incluye en macOS en un paquete de herramientas de automatización. El término AppleScript puede referirse al lenguaje de scripting, a un script escrito en dicho lenguaje o a la arquitectura de scripting abierto de macOS que lo sustenta. [ 4 ] [ 5 ]
AppleScript es principalmente un mecanismo para controlar eventos de Apple , una tecnología de comunicación entre aplicaciones (IAC) que intercambia datos entre aplicaciones y las controla. [ 4 ] [ 5 ] Además, AppleScript admite cálculos básicos y procesamiento de texto, y es extensible mediante complementos de scripting que agregan funciones al lenguaje .
AppleScript está estrechamente ligado al entorno Mac, de forma similar a como Windows Script Host lo está al entorno Windows. En otras palabras, AppleScript no es un lenguaje de scripting de propósito general como Python . Una de las maneras en que AppleScript está ligado a las particularidades de su entorno es que depende de que las aplicaciones publiquen diccionarios de objetos y operaciones direccionables.
Como es habitual en los lenguajes de comandos, AppleScript no está diseñado para realizar directamente un procesamiento intensivo. Por ejemplo, un script no puede realizar de forma eficiente operaciones matemáticas complejas ni un procesamiento de texto complicado. Sin embargo, AppleScript puede utilizarse en combinación con otras herramientas y tecnologías, lo que le permite aprovechar contextos de programación más eficientes.
El lenguaje tiene aspectos de programación estructurada , procedimental , orientada a objetos y en lenguaje natural , pero no se ajusta estrictamente a ninguno de estos paradigmas . [ 5 ] : xxvi
Historia
A finales de la década de 1980, Apple consideró utilizar el lenguaje de scripting HyperTalk de HyperCard como lenguaje estándar para el desarrollo de usuarios finales en toda la compañía y dentro de su sistema operativo clásico Mac OS , y para la comunicación entre procesos entre productos de Apple y de terceros. [ 6 ] HyperTalk podía ser utilizado por principiantes para programar una pila de HyperCard. Los ingenieros de Apple reconocieron que se podía diseñar un lenguaje de scripting similar, pero más orientado a objetos, para ser utilizado con cualquier aplicación , y el proyecto AppleScript nació como un derivado de un esfuerzo de investigación para modernizar el Macintosh en su conjunto y finalmente se convirtió en parte de System 7. [ 1 ]
AppleScript se lanzó en octubre de 1993 como parte de System 7.1.1 (System 7 Pro, la primera actualización importante de System 7). [ 1 ] QuarkXPress (versión 3.2) fue una de las primeras aplicaciones de software importantes que admitía AppleScript. Esto, a su vez, propició la amplia adopción de AppleScript en el mundo de la edición y la preimpresión, donde a menudo se integraban flujos de trabajo complejos. Este fue un factor clave para que Macintosh mantuviera su posición dominante en la edición y la preimpresión, incluso después de que QuarkXPress y otras aplicaciones de edición se adaptaran a Microsoft Windows.
Tras cierta incertidumbre sobre el futuro de AppleScript en el sistema operativo de próxima generación de Apple, el paso a Mac OS X (alrededor de 2002) y sus frameworks Cocoa aumentaron enormemente la utilidad y flexibilidad de AppleScript. Las aplicaciones Cocoa permiten a los desarrolladores implementar la funcionalidad básica de scripting para sus apps con un mínimo esfuerzo, ampliando el número de aplicaciones que se pueden scriptear directamente. Al mismo tiempo, el cambio a la base de Unix y la capacidad de AppleScript para ejecutar comandos de Unix directamente, con el do shell scriptcomando [ 7 ] , permitió a los AppleScript un control mucho mayor sobre el propio sistema operativo. [ 5 ] : 863 AppleScript Studio , lanzado con Mac OS X 10.2 como parte de Xcode , y posteriormente el framework AppleScriptObjC , lanzado en Mac OS X 10.6 , permitieron a los usuarios crear aplicaciones Cocoa utilizando AppleScript. [ 5 ] : 969
En un artículo de 2006, Macworld incluyó AppleScript entre su clasificación de los 30 productos más importantes de Apple hasta la fecha, ubicándolo en el puesto #17. [ 8 ]
En un artículo de 2013 para Macworld , el veterano desarrollador de software para Mac y comentarista John Gruber concluyó su reflexión sobre "la improbable persistencia de AppleScript" señalando: "En teoría, AppleScript podría ser mucho mejor; sin embargo, en la práctica, es lo mejor que tenemos que funciona. Es un ejemplo de las ventajas de Mac sobre iOS para los aficionados a la tecnología y los usuarios avanzados". [ 9 ]
En octubre de 2016, Sal Soghoian, gerente de producto de AppleScript y evangelista de la automatización desde hace mucho tiempo , dejó Apple cuando su puesto fue eliminado "por razones comerciales". [ 10 ] Veteranos de la comunidad Mac como John Gruber y Andy Ihnatko generalmente respondieron con preocupación, cuestionando el compromiso de Apple con la comunidad de desarrolladores y los usuarios profesionales. [ 11 ] El vicepresidente sénior de ingeniería de software de Apple, Craig Federighi, respondió en un correo electrónico diciendo que "¡Tenemos toda la intención de continuar nuestro soporte para las excelentes tecnologías de automatización en macOS!", aunque Jeff Gamet de The Mac Observer opinó que no hizo mucho para calmar sus dudas sobre el futuro de la automatización de Apple en general y AppleScript en particular. [ 12 ] Por el momento, AppleScript sigue siendo un componente de las tecnologías de automatización de macOS, junto con Automator , Atajos , Servicios y scripts de shell .
Intención
AppleScript fue diseñado para ser utilizado como un lenguaje de scripting accesible para el usuario final, ofreciendo a los usuarios un mecanismo inteligente para controlar aplicaciones y acceder y modificar datos y documentos. AppleScript utiliza eventos de Apple , un conjunto de formatos de datos estandarizados que el sistema operativo Macintosh utiliza para enviar información a las aplicaciones, de forma aproximadamente análoga al envío de consultas XPath a través de XML-RPC en el mundo de los servicios web . [ 5 ] : xxvi Los eventos de Apple permiten que un script trabaje con múltiples aplicaciones simultáneamente, pasando datos entre ellas para que se puedan realizar tareas complejas sin interacción humana. [ 4 ] Por ejemplo, un AppleScript para crear una galería web simple podría hacer lo siguiente:
- Abra una foto en una aplicación de edición de fotos (enviando a esa aplicación un evento de Apple " Abrir archivo ").
- Indica a la aplicación de edición de fotos que manipule la imagen (por ejemplo, que reduzca su resolución, añada un borde o añada un crédito fotográfico).
- Indica a la aplicación de edición de fotos que guarde la imagen modificada en un archivo en una carpeta diferente (enviándole a dicha aplicación un evento de Apple de Guardar y/o Cerrar ).
- Envía la nueva ruta del archivo (a través de otro evento de Apple) a un editor de texto o a una aplicación de edición web.
- Dile a esa aplicación de edición que escriba un enlace para la foto en un archivo HTML.
- Repita los pasos anteriores para toda una carpeta de imágenes (cientos o incluso miles de fotos).
- Sube el archivo HTML y la carpeta de fotos revisadas a un sitio web, enviando eventos de Apple a un cliente FTP gráfico , utilizando comandos integrados de AppleScript o enviando eventos de Apple a utilidades FTP de Unix.
Para el usuario, cientos o miles de pasos en múltiples aplicaciones se han reducido a la simple ejecución del script, completando la tarea en mucho menos tiempo y sin posibilidad de errores humanos aleatorios. Un script complejo y extenso podría desarrollarse para ejecutarse una sola vez, mientras que otros scripts se utilizan repetidamente.
Los elementos programables de una aplicación son visibles en el Diccionario de scripts de la aplicación (distribuido junto con la misma), que puede consultarse en cualquier editor de scripts . Los elementos suelen agruparse en conjuntos, según las relaciones funcionales que existen entre ellos. En cualquier conjunto hay dos tipos básicos de elementos: clases y comandos.
- Las clases son objetos programables; por ejemplo, una aplicación de edición de texto casi con seguridad tendrá clases para ventanas, documentos y textos. Estas clases tendrán propiedades que se pueden modificar (tamaño de la ventana, color de fondo del documento, tamaño de la fuente del texto, etc.) y pueden contener otras clases (una ventana contendrá uno o más documentos, un documento contendrá texto y un objeto de texto contendrá párrafos, palabras y caracteres).
- Los comandos , por el contrario, son instrucciones que se pueden dar a objetos programables. El formato general de un bloque de AppleScript consiste en indicarle a un objeto programable que ejecute un comando.
Todas las aplicaciones programables comparten algunos comandos y objetos básicos, generalmente denominados Suite Estándar: comandos para abrir, cerrar o guardar un archivo, imprimir algo, salir, asignar datos a variables, así como un objeto de aplicación básico que define las propiedades de programación de la propia aplicación. Muchas aplicaciones cuentan con numerosas suites capaces de realizar cualquier tarea que la aplicación pueda ejecutar. En casos excepcionales, las aplicaciones pueden admitir complementos que incluyen sus propios diccionarios de scripts.
AppleScript se diseñó para crear scripts de forma intuitiva mediante la grabación de las acciones del usuario. Esta capacidad de grabación de AppleScript debe integrarse en la aplicación: la aplicación debe ser compatible con los eventos de Apple y la grabación de AppleScript; [ 13 ] dado que Finder admite la grabación de AppleScript, puede resultar útil como referencia. Cuando se abre el Editor de AppleScript (Editor de scripts) y se pulsa el botón Grabar, las acciones del usuario en las aplicaciones grabables se convierten en sus comandos AppleScript equivalentes y se muestran en la ventana del Editor de scripts. El script resultante se puede guardar y volver a ejecutar para replicar las acciones originales, o modificar para que sea más útil en general.
metáfora del lenguaje natural
Mientras que los eventos de Apple son una forma de enviar mensajes a las aplicaciones, AppleScript es un lenguaje específico diseñado para enviar eventos de Apple. Con el objetivo de facilitar su uso a los principiantes, el lenguaje AppleScript se basa en la metáfora del lenguaje natural , al igual que la interfaz gráfica de usuario se basa en la metáfora del escritorio . Un código AppleScript bien escrito debe ser lo suficientemente claro como para que cualquiera pueda leerlo y comprenderlo, y además, debe poder editarse fácilmente. El lenguaje se basa en gran medida en el lenguaje HyperTalk de HyperCard, extendido para referirse no solo al mundo de tarjetas y pilas de HyperCard, sino también, teóricamente, a cualquier documento. Para ello, el equipo de AppleScript introdujo el Modelo de Objetos de Eventos de Apple (AEOM), que especifica los objetos que cada aplicación "conoce".
La esencia del lenguaje AppleScript reside en el uso de términos que funcionan como sustantivos y verbos combinables. Por ejemplo, en lugar de utilizar verbos distintos para imprimir una página, un documento o un rango de páginas (como printPage, printDocument o printRange), AppleScript utiliza un único verbo "print" que puede combinarse con un objeto, como una página, un documento o un rango de páginas.
Imprimir página 1Imprimir documento 2Imprima las páginas 1 a 5 del documento 2.En general, AEOM define varios objetos, como "documento" o "párrafo", y sus acciones correspondientes, como "cortar" y "cerrar". El sistema también define formas de referirse a las propiedades de los objetos, de modo que se puede hacer referencia al "tercer párrafo del documento 'Buenos días'" o al "color de la última palabra de la ventana principal". AEOM utiliza un diccionario de aplicaciones para asociar los eventos de Apple con términos legibles por humanos, lo que permite la traducción bidireccional entre AppleScript legible por humanos y los eventos de Apple en código de bytes . Para descubrir qué elementos de un programa son programables mediante scripts, se pueden consultar los diccionarios de las aplicaciones compatibles. (En las aplicaciones Xcode y Editor de scripts , esto se encuentra en Archivo → Abrir diccionario ).
Para designar qué aplicación debe ser el destino de dicho mensaje, AppleScript utiliza una construcción "tell":
Dile a la aplicación "Microsoft Word" que se cierre. Fin de la instrucción.Alternativamente, la información puede expresarse en una sola línea utilizando un infinitivo :
Dile a la aplicación "Microsoft Word" que se cierre.Para los eventos del "Core Suite" (activar, abrir, volver a abrir, cerrar, imprimir y salir), la aplicación puede proporcionarse como objeto directo a los comandos transitivos:
Cerrar la aplicación "Microsoft Word"El concepto de jerarquía de objetos se puede expresar mediante bloques anidados:
dile a la aplicación "QuarkXPress" dile al documento 1 dile a la página 2 dile al cuadro de texto 1 establece la palabra 5 en "Apple" fin dile fin dile fin dile fin dileEl concepto de jerarquía de objetos también puede expresarse utilizando frases preposicionales anidadas o una serie de posesivos:
píxel 7 de la fila 3 de la imagen TIFF "mi mapa de bits" 7º píxel de la tercera fila de la imagen TIFF "mi mapa de bits"que en otro lenguaje de programación podría expresarse como llamadas a métodos secuenciales , como en este pseudocódigo :
getTIFF ( "mi mapa de bits" ). getRow ( 3 ). getPixel ( 7 );AppleScript incluye sintaxis para el conteo ordinal, «el primer párrafo», así como para el cardinal, «párrafo uno». Del mismo modo, los números pueden representarse tanto en texto como numéricamente; se admiten «cinco», «quinto» y «5»; son sinónimos en AppleScript. Además, el artículo «el/la» puede utilizarse en cualquier parte del script para mejorar la legibilidad: no afecta a su funcionamiento.
Ejemplos
¡Hola Mundo!
Un programa "¡Hola, mundo!" se puede escribir en una sola línea. Para mostrar una ventana modal con botones "Aceptar" y "Cancelar":
mostrar diálogo "¡Hola, mundo!"Para mostrar una ventana modal con un botón "Aceptar" y un icono de alerta:
mostrar alerta "¡Hola, mundo!"Para generar audio mediante una voz sintetizada:
¡Di "Hola, mundo!"Calculadora a prueba de fallos
dile a la aplicación "Buscador"-- Establecer variablesestablecer el1 al texto devuelto de ( mostrar diálogo "1.º" respuesta predeterminada "Número aquí" botones { "Continuar" } botón predeterminado 1 )establecer el2 al texto devuelto de ( mostrar diálogo "2do" respuesta predeterminada "Número aquí" botones { "Continuar" } botón predeterminado 1 )intentarestablecer el1 como el1 como enteroestablecer el2 como un enteropor errormostrar diálogo "Solo puede introducir números en una calculadora." con título "ERROR" botones { "Aceptar" } botón predeterminado 1devolverfin del intento-- ¿Agregar?si el botón devuelto de ( mostrar diálogo "¿Agregar?" botones { "No" , "Sí" } botón predeterminado 2 ) es "Sí" entoncesestablecer ans a ( el1 + el2 )mostrar diálogo ans con título "Responder" botones { "Aceptar" } botón predeterminado 1decir respuesta-- ¿Restar? de lo contrario, si el botón devuelto de ( mostrar diálogo "¿Restar?" botones { "No" , "Sí" } botón predeterminado 2 ) es "Sí" entoncesestablecer ans a ( el1 - el2 )mostrar diálogo ans con título "Responder" botones { "Aceptar" } botón predeterminado 1decir respuesta-- ¿Multiplicar? de lo contrario, si el botón devuelto de ( mostrar diálogo "¿Multiplicar?" botones { "No" , "Sí" } botón predeterminado 2 ) es "Sí" entoncesestablecer ans a ( el1 * el2 )mostrar diálogo ans con título "Responder" botones { "Aceptar" } botón predeterminado 1decir respuesta-- ¿Dividir? de lo contrario, si el botón devuelto de ( mostrar diálogo "¿Dividir?" botones { "No" , "Sí" } botón predeterminado 2 ) es "Sí" entoncesestablecer ans a ( el1 / el2 )mostrar diálogo ans con título "Responder" botones { "Aceptar" } botón predeterminado 1decir respuestademásretraso 1dice "No has seleccionado ninguna función. La operación se ha cancelado."fin sifin de decirInicio de sesión de Drive
Este script controla la aplicación Finder para iniciar sesión con el nombre de usuario "John" y la contraseña "app123":
dile a la aplicación "Buscador"establecer passAns a "app123"establecer userAns a "John"si el texto devuelto de ( mostrar diálogo "Nombre de usuario" respuesta predeterminada "" ) es userAns entoncesmostrar diálogo "Correcto" botones { "Continuar" } botón predeterminado 1si el texto devuelto de ( mostrar diálogo "Nombre de usuario: John" & devolver & "Contraseña" respuesta predeterminada "" botones { "Continuar" } botón predeterminado 1 con respuesta oculta ) es passAns entoncesmostrar diálogo "Acceso concedido" botones { "Aceptar" } botón predeterminado 1demásmostrar diálogo "Contraseña incorrecta" botones { "Aceptar" } botón predeterminado 1fin sidemásmostrar diálogo "Nombre de usuario incorrecto" botones { "Aceptar" } botón predeterminado 1fin sifin de decirHerramientas de desarrollo
Editores de guiones
Las herramientas de desarrollo que se describen a continuación proporcionan un entorno de programación para crear scripts con AppleScript , permitiendo componer, validar, compilar, ejecutar y depurar scripts. Algunas también permiten listar diccionarios de AppleScript, guardar scripts en diversos formatos, resaltar la sintaxis e insertar fragmentos de código.
- Editor de AppleScript
- Un editor de Apple incluido en macOS, llamado Editor de AppleScript en Mac OS X Snow Leopard (10.6) hasta OS X Mavericks (10.9) y Editor de scripts en todas las versiones anteriores y posteriores de macOS. Los scripts se escriben en ventanas de edición de documentos donde se pueden compilar y ejecutar. Estas ventanas contienen varios paneles donde se puede consultar información registrada, resultados de ejecución y otra información para la depuración. El acceso a diccionarios de scripts y fragmentos de código preescritos está disponible a través de los menús de la aplicación. Desde OS X Yosemite (10.10), el Editor de scripts incluye la capacidad de escribir tanto en AppleScript como en JavaScript . [ 14 ]
- Xcode
- Un conjunto de herramientas de Apple para el desarrollo de aplicaciones, con funciones para editar scripts y crear aplicaciones independientes escritas en AppleScript.
- Depurador de scripts
- Script Debugger, un IDE comercial de Late Night Software , es un entorno AppleScript relativamente avanzado que permite al programador depurar scripts AppleScript mediante ejecución paso a paso , puntos de interrupción , entrada y salida de funciones/subrutinas, seguimiento de variables, etc. Script Debugger también incluye un explorador de diccionario avanzado que permite al usuario visualizar el diccionario en situaciones reales. Es decir, en lugar de solo una lista de los términos que abarca el diccionario, se puede abrir un documento en Pages , por ejemplo, y ver cómo se aplican los términos del diccionario a ese documento, lo que facilita determinar qué partes del diccionario utilizar. Script Debugger no está diseñado para crear scripts con una interfaz gráfica de usuario (GUI), más allá de alertas y diálogos básicos, sino que se centra en la codificación y depuración de scripts.
- Sonríe y SmileLab
- Smile es un IDE gratuito/comercial de terceros para AppleScript, escrito completamente en AppleScript. [ 15 ] Smile es gratuito y está diseñado principalmente para el desarrollo en AppleScript. SmileLab es un software comercial con amplias funciones para análisis numérico, gráficos, automatización de máquinas y producción web. Smile y SmileLab utilizan una variedad de ventanas diferentes: ventanas de AppleScript para ejecutar y guardar scripts completos, terminales de AppleScript para probar el código línea por línea y ventanas Unicode para trabajar con texto y XML. Los usuarios pueden crear interfaces complejas, llamadas diálogos, para situaciones en las que los diálogos integrados en AppleScript son insuficientes.
- ASObjC Explorer 4
- Un IDE comercial descontinuado de Shane Stanley para AppleScript, especialmente para AppleScriptObjC . [ 16 ] La característica principal es el registro de objetos/eventos de Cocoa , la depuración y el autocompletado de código. Los usuarios pueden leer eventos y objetos de Cocoa como en otras aplicaciones scriptables. Esta herramienta fue creada originalmente para las Bibliotecas de AppleScript (disponibles en OS X Mavericks ). Las Bibliotecas de AppleScript buscan componentes de AppleScript reutilizables y admiten el diccionario de AppleScript integrado (sdef). ASObjC Explorer 4 también puede ser un editor de scripts externo de Xcode.
- FaceSpan
- Un IDE comercial descontinuado de Late Night Software para crear aplicaciones AppleScript con interfaces gráficas de usuario. [ 17 ]
Lanzadores de scripts
Para escenarios de desarrollo y ad hoc, un script se puede ejecutar desde un editor de scripts, pero para admitir la automatización, un script debe ejecutarse sin abrir otra aplicación. Hay varias opciones para lograrlo:
- Applets
- Los AppleScripts se pueden guardar desde un editor de scripts como aplicaciones (llamadas applets o droplets cuando aceptan entrada mediante arrastrar y soltar ). [ 5 ] : 69 Los applets se pueden ejecutar desde el Dock , desde la barra de herramientas de las ventanas del Finder , desde Spotlight , desde lanzadores de aplicaciones de terceros o desde cualquier otro lugar donde se puedan ejecutar aplicaciones.
- Acciones de carpeta
- Mediante las acciones de carpeta de AppleScript, se pueden ejecutar scripts cuando se producen cambios específicos en las carpetas (como añadir o eliminar archivos). [ 18 ] Las acciones de carpeta se pueden asignar haciendo clic en una carpeta y seleccionando « Configurar acciones de carpeta...» en el menú contextual; la ubicación de este comando difiere ligeramente en Mac OS X 10.6.x con respecto a versiones anteriores. Esta misma acción se puede lograr con utilidades de terceros como Hazel. [ 19 ]
- Lanzadores de teclas de acceso rápido
- Se pueden asignar atajos de teclado a los AppleScripts en el menú de scripts mediante el panel de preferencias Configuración de teclado y ratón en Preferencias del Sistema . Además, hay varias utilidades de terceros disponibles —Alfred , [ 20 ] FastScripts, [ 21 ] Keyboard Maestro , [ 22 ] QuicKeys, [ 23 ] Quicksilver , [ 24 ] TextExpander [ 25 ] — que pueden ejecutar AppleScripts bajo demanda mediante combinaciones de teclas.
- Menú de scripts
- Este menú global del sistema proporciona acceso a los AppleScripts desde la barra de menús de macOS, visible independientemente de la aplicación que se esté ejecutando. [ 26 ] (Además, muchas aplicaciones de Apple, algunas de terceros y algunos complementos proporcionan sus propios menús de scripts. Estos pueden activarse de diferentes maneras, pero todos funcionan esencialmente de la misma forma). Seleccionar un script en el menú de scripts lo ejecuta. Desde Mac OS X 10.6.x, el menú de scripts global del sistema se puede habilitar desde las preferencias del Editor de scripts ; en versiones anteriores de Mac OS X, se podía habilitar desde la aplicación Utilidad de AppleScript. Cuando se habilita por primera vez, el menú de scripts muestra una biblioteca predeterminada de AppleScripts funcionales y bastante genéricos, que también se pueden abrir en el Editor de scripts y usar como ejemplos para aprender AppleScript. Los scripts se pueden organizar para que solo aparezcan en el menú cuando determinadas aplicaciones estén en primer plano.
- Línea de comandos de Unix y launchd
- Los AppleScripts se pueden ejecutar desde la línea de comandos de Unix o desde launchd para tareas programadas, [ 5 ] : 716 mediante la herramienta de línea de comandos osascript. [ 27 ] La herramienta osascript puede ejecutar scripts compilados (archivos .scpt) y archivos de texto plano (archivos .applescript; estos son compilados por la herramienta en tiempo de ejecución). Las aplicaciones de script se pueden ejecutar mediante el comando open de Unix.
Recursos
Bibliotecas de AppleScript
Módulos reutilizables de AppleScript (disponibles desde OS X Mavericks ), escritos en AppleScript o AppleScriptObjC y guardados como archivos de script o paquetes en ciertas ubicaciones, [ 28 ] que pueden ser llamados desde otros scripts. Cuando se guarda como un paquete, una biblioteca puede incluir un archivo de diccionario de AppleScript (sdef), [ 29 ] funcionando así como una extensión de script pero escrita en AppleScript o AppleScriptObjC.
AppleScript Studio
Un marco para adjuntar interfaces Cocoa a aplicaciones AppleScript, parte del paquete Xcode en Mac OS X 10.4 y 10.5, ahora obsoleto en favor de AppleScriptObjC. [ 30 ] : 438
AppleScriptObjC
Un marco de desarrollo de software Cocoa , también llamado AppleScript/Objective-C o ASOC, [ 31 ] parte del paquete Xcode desde Mac OS X Snow Leopard . [ 32 ] AppleScriptObjC permite que los AppleScripts utilicen clases y métodos de Cocoa directamente. [ 33 ] La siguiente tabla muestra la disponibilidad de AppleScriptObjC en varias versiones de macOS: [ 34 ]
AppleScriptObjC se puede utilizar en todas las versiones posteriores de Mac OS X.
Automatizador
Un entorno de edición gráfico y modular en el que los flujos de trabajo se construyen a partir de acciones . Su objetivo es replicar muchas de las funciones de AppleScript sin necesidad de conocimientos de programación. Automator cuenta con una acción diseñada específicamente para contener y ejecutar AppleScripts, para tareas demasiado complejas para el marco simplificado de Automator. [ 35 ]
Aplicaciones de sistema central programables
Estas aplicaciones que se ejecutan solo en segundo plano, incluidas en macOS, se utilizan para permitir que AppleScript acceda a funciones que normalmente no serían programables. A partir de Mac OS X 10.6.3, incluyen las aplicaciones programables para:
- VoiceOver (paquete de lector de pantalla braille y de audio programable)
- Eventos del sistema (control de aplicaciones no programables y acceso a ciertas funciones del sistema y operaciones básicas de archivos)
- Utilidad de configuración de impresora (utilidad programable para gestionar trabajos de impresión)
- Eventos de imagen (manipulación básica de imágenes)
- HelpViewer (utilidad programable para mostrar información de ayuda)
- Eventos de base de datos (interfaz mínima de base de datos SQLite3)
- Utilidad de AppleScript (para automatizar algunas preferencias relacionadas con AppleScript)
Complementos de scripting (OSAX)
Complementos para AppleScript desarrollados por Apple o terceros. [ 36 ] Están diseñados para extender el conjunto de comandos integrados, ampliando las características de AppleScript y haciéndolo menos dependiente de la funcionalidad proporcionada por las aplicaciones. macOS incluye una colección de complementos de scripting denominados Standard Additions ( StandardAdditions.osax ) que agrega un conjunto de comandos y clases que no forman parte de las características principales de AppleScript, incluyendo diálogos de interacción con el usuario, lectura y escritura de archivos, comandos del sistema de archivos, funciones de fecha y operaciones de texto y matemáticas; sin este OSAX, AppleScript no tendría la capacidad de realizar muchas acciones básicas que no proporciona directamente una aplicación.
Idioma
Mecanografía
Las variables no tienen un tipo estricto y no necesitan ser declaradas. Pueden aceptar cualquier tipo de dato (incluidos scripts y funciones). Por ejemplo:
-- crea una variable entera llamada variable1establecer variable1 a 1-- crea una variable de texto llamada variable2establecer variable2 a "Hola"-- crea una variable de lista llamada variable3copiar { 17 , "doubleday" } a la variable3-- Copiar los elementos de la lista de la variable3 en variables separadas, variable4 y variable5.establecer { variable4 , variable5 } a variable3-- asignar una variable a una instancia de un scriptestablecer variable6 para script myScriptAlcance
Una subrutina no puede ser llamada directamente desde un bloque tell de la aplicación. Se requiere el uso de myo .of me
dile a la aplicación "Finder" que establezca x en mi myHandler () -- o establece x en miHandler () de mí fin dileen myHandler () --comandos finalizan myHandlerUtilizar la misma técnica para la creación de scripts de comandos adicionales puede reducir los errores y mejorar el rendimiento.
Dile a la aplicación "Finder" que establezca cualquierNúmero a mi ( número aleatorio del 5 al 50 ). Fin de la instrucción.Tipos y objetos
Un script puede definir tipos de datos personalizados o utilizar una de las muchas clases y objetos integrados que proporciona el lenguaje y que suelen ser reconocidos por las aplicaciones programables. Algunos tipos y objetos integrados destacados son:
- objetos básicos
- aplicación : se utiliza principalmente como especificador para las instrucciones tell (
tell application "Finder" …) - script : los objetos script son contenedores de scripts; cada AppleScript crea un objeto script cuando se ejecuta, y los objetos script pueden crearse dentro de los AppleScripts.
- clase : meta-objeto que especifica el tipo de otros objetos
- referencia : objeto que encapsula un especificador de objeto no evaluado que puede o no apuntar a un objeto válido; puede evaluarse bajo demanda accediendo a su
contentspropiedad
- Objetos de datos estándar
- constante : valor constante ; las constantes definidas por el lenguaje incluyen
pi,tabylinefeed - booleano : valor booleano (verdadero/falso); subclase de
constant - número : superclase abstracta de y ; rara vez se usa directamente
integerreal - entero : entero ; se puede manipular con operadores matemáticos incorporados
- real : número de punto flotante ( real ); se puede manipular con operadores matemáticos integrados.
- fecha : fecha y hora
- texto : antes de AppleScript 2.0 (Mac OS X 10.4 y anteriores) la
textclase era distinta destringyUnicode text, y las tres se comportaban de forma algo diferente; en 2.0 (10.5) y posteriores, todas son sinónimos y todo el texto se maneja como UTF-16 [ 37 ]
- contenedores
- lista : lista ordenada de objetos; puede contener cualquier clase, incluidas otras listas y clases definidas por las aplicaciones.
- registro : lista de objetos con clave; similar a una lista, pero estructurada como pares clave-valor ; no se admite el acceso con clave en tiempo de ejecución; todas las claves deben ser identificadores constantes en tiempo de compilación.
- Sistema de archivos
- alias : referencia a un objeto del sistema de archivos existente (archivo o carpeta); mantiene el vínculo con el objeto del sistema de archivos si se mueve o se cambia su nombre.
- archivo : referencia a un objeto del sistema de archivos; puede referirse a un objeto que no existe.
- Archivo POSIX : referencia a un objeto del sistema de archivos, en texto plano, utilizando la notación de barra inclinada (/) al estilo Unix ( POSIX ); no es un tipo de datos verdadero, ya que AppleScript convierte automáticamente un archivo POSIX en un archivo ordinario [ 38 ].
- Misceláneas
- Color RGB : especifica una tripleta RGB (en formato de color de 16 bits de alta resolución ), para su uso en comandos y objetos que trabajan con colores.
- tipos de unidades : convierte entre unidades estándar; por ejemplo, un valor se puede definir como
square yards, y luego convertirlo asquare feetmediante la conversión entre tipos de unidades utilizando elasoperador
Bloquear
AppleScript admite la estructura de código de sentencias compuestas mediante sintaxis de una o varias líneas. La sintaxis de varias líneas finaliza un bloque de código con una frase como donde la palabra clave es la palabra clave de la sentencia al inicio del bloque. Por ejemplo:end keyword
-- Formulario simple para indicarle a la aplicación "Safari" que se active-- Compuesto tell aplicación "MyApp" -- comandos para app end tellGuion
Un objeto de script es un objeto completo que encapsula métodos y datos, y hereda datos y comportamiento de un script padre. Los objetos de script pueden usar las mismas construcciones 'tell' que se usan para los objetos de aplicación y se pueden cargar y guardar en archivos. En algunos casos, el rendimiento en tiempo de ejecución se puede mejorar mediante el uso de objetos de script. Un objeto de script se define como:
script scriptName -- comandos y manejadores específicos del script end scriptBucle
La estructura de bucle tiene múltiples variaciones, todas utilizando la palabra clave repeat . Se puede salir del bucle mediante exit repeat .
- Incondicional
repetir -- comandos que se repetirán fin de repetición- Repítelo varias veces
repetir 10 veces -- comandos que se repetirán fin de repetición- Condicional
En el bucle `repeat while` , el bloque se ejecuta mientras una condición sea verdadera. El bucle `repeat until` es igual, excepto que el bloque se ejecuta mientras la condición sea falsa.
establecer x en 5 repetir mientras x > 0 establecer x en x - 1 fin repetirestablecer x en 5 repetir hasta que x ≤ 0 establecer x en x - 1 fin repetir- Con una variable
Una variable se inicializa con un valor y, después de cada ejecución del bloque, la variable se incrementa en el valor del paso; 1 si no se especifica.
-- repetir el bloque 2000 veces, i obtiene todos los valores del 1 al 2000 repetir con i del 1 al 2000 -- comandos a repetir fin de repetición-- repetir el bloque 4 veces, i obtiene los valores 100, 75, 50 y 25 repetir con i de 100 a 25 por - 25 -- comandos a repetir fin de repetición- Enumerar
Una variable contiene el valor de cada elemento de la lista a medida que avanza el bucle.
establecer total a 0 repetir con loopVariable en { 1 , 2 , 3 , 4 , 5 } establecer total a total + loopVariable fin repetirEntrenador de animales
Un manejador , una variación de la estructura de bloques, define una subrutina.
- Controlador de funciones
en miFunción ( parámetros ...)-- comandos de subrutinafinalizar miFunción- Bloque de acciones de carpeta
al agregar elementos de carpeta a estaCarpeta después de recibir estosElementos-- comandos para aplicar a la carpeta o elementos finalizar agregar elementos de carpeta a- Ejecutar controlador
en carrera-- comandoscarrera finalLos manejadores también se pueden definir usando "to" en lugar de "on" y se pueden escribir para que acepten parámetros etiquetados, no encerrados entre paréntesis.
- Controlador con parámetros etiquetados
en rock around the clock mostrar diálogo ( reloj como cadena ) fin rock -- llamado con: rock around the current date- Controlador que utiliza "to" y parámetros etiquetados.
para comprobar tuNúmero de abajo hacia arriba si abajo ≤ tuNúmero y tuNúmero ≤ arriba entonces mostrar diálogo " ¡ Felicidades ! Has anotado." fin si fin comprobación --llamado con: comprobar 8 de 7 a 10En AppleScript existen cuatro tipos de manejadores predefinidos: ejecutar, abrir, inactivo y salir, cada uno de los cuales se crea de la misma manera que el manejador de ejecución que se muestra arriba.
- Ejecutar controlador
- Define el código principal del script, que se ejecuta al iniciarse. Los bloques de controlador de ejecución son opcionales, a menos que se pasen argumentos al script. Si se omite un bloque de controlador de ejecución explícito, todo el código que no esté contenido dentro de estos bloques se ejecuta como si estuviera en un controlador de ejecución implícito.
- Abrir manejador
- Definido usando "al abrir los elementos".
al abrir los elementos repetir con este elemento en los elementos decirle a la aplicación "Finder" que actualice este elemento fin de repetición fin de aperturaCuando un script que contiene un controlador de apertura se guarda como un applet, este se convierte en un droplet. Un droplet se identifica en el Finder por su icono, que incluye una flecha que indica que se pueden arrastrar y soltar elementos sobre él. El controlador de apertura del droplet se ejecuta cuando se arrastran archivos o carpetas sobre su icono. Las referencias a los elementos arrastrados sobre el icono del droplet se pasan al script del droplet como parámetro del controlador de apertura. Un droplet también se puede iniciar de la misma manera que un applet normal, ejecutando su controlador de ejecución.
- Controlador inactivo
- Una subrutina que el sistema ejecuta periódicamente cuando la aplicación está inactiva.
on idle -- código que se ejecutará cuando la ejecución del script haya finalizado return 60 -- número de segundos de pausa antes de volver a ejecutar el controlador de inactividad end idleSe puede usar un controlador de inactividad en applets o droplets guardados como applets que permanecen abiertos, y es útil para scripts que monitorean datos o eventos específicos. El tiempo de inactividad predeterminado es de 30 segundos, [ 39 ] pero se puede cambiar incluyendo una instrucción 'return x' al final de la subrutina, donde x es el número de segundos que el sistema debe esperar antes de ejecutar el controlador nuevamente.
- Controlador de salida
- Un controlador que se ejecuta cuando el applet recibe una solicitud de salida. Se puede usar para guardar datos o realizar otras tareas antes de salir.
on quit --comandos que se ejecutarán antes de que el script finalice continue quit -- necesario para que el script finalice realmente end quitComentario
Un comentario puede formatearse de varias maneras. Un comentario de línea comienza con --o, alternativamente, en versiones posteriores (AppleScript 2.0, lanzado por primera vez en Mac OS X Leopard ), con #. Esto último permite que un script de AppleScript se ejecute como un ejecutable si comienza con una línea shebang#!/usr/bin/osascript . Por ejemplo:
--Este es un comentario de línea # ¡Esto también! (en versiones posteriores)Un comentario en bloque (que puede constar de varias líneas) está delimitado por (*y *). Por ejemplo:
(* Este es un comentario de varias líneas *)interacción del usuario
AppleScript ofrece varias opciones de interfaz de usuario, como diálogos, alertas y listas desplegables. (El carácter ⌥ Option+return , que se obtiene al escribirlo en el Editor de scripts, indica que una misma instrucción continúa en varias líneas).
-- Diálogo configurado dialogReply para mostrar el diálogo "Texto del diálogo" respuesta predeterminada "Respuesta de texto" respuesta oculta falso botones { "Omitir" , "Aceptar" , "Cancelar" } botón predeterminado "Aceptar" botón de cancelar "Omitir" con título "Título de la ventana de diálogo" con icono nota abandonar después de 15-- Elegir de la lista set chosenListItem para elegir de la lista { "A" , "B" , "3" } con título "Título de la lista" con mensaje "Texto del mensaje" elementos predeterminados "B" Nombre del botón Aceptar "¡Se ve bien!" Nombre del botón Cancelar "No, inténtalo de nuevo" selecciones múltiples permitidas falso con selección vacía permitida-- Alerta configura resultAlertReply para mostrar alerta "Texto de alerta" como advertencia botones { " Omitir" , "Aceptar" , "Cancelar" } botón predeterminado 2 cancelar botón 1 abandonar después de 2Cada método de interacción del usuario puede devolver los valores de los botones pulsados, los elementos seleccionados o el texto introducido para su posterior procesamiento. Por ejemplo:
mostrar alerta " ¡ Hola, mundo!" botones { "Rechazar groseramente" , "Aceptar con gusto" } establecer la respuesta al botón devuelto del resultado si la respuesta es "Aceptar con gusto" entonces emitir pitido 5 sino decir "¡Tonterías!" fin siArquitectura de scripting abierta
Apple proporciona la Open Scripting Architecture (OSA) para que otros lenguajes de scripting y productos de scripting/automatización de terceros (como QuicKeys y UserLand Frontier) funcionen en igualdad de condiciones con AppleScript. AppleScript se implementa como un componente de Component Manager , y las especificaciones básicas para la interfaz de dichos componentes con la OSA son públicas, lo que permite a otros desarrolladores añadir sus propios componentes de scripting al sistema. Las API de cliente públicas para cargar, guardar y compilar scripts funcionan igual para todos estos componentes, lo que significa que los applets y droplets pueden contener scripts en cualquiera de esos lenguajes de scripting. [ 40 ]
Una característica de OSA son las extensiones de scripting , o OSAX ( Open Scripting Architecture eXtension ) , [ 36 ] inspiradas en los comandos externos de HyperCard . Las extensiones de scripting son bibliotecas que permiten a los programadores ampliar la funcionalidad de AppleScript. Los comandos incluidos como extensiones de scripting están disponibles en todo el sistema y no dependen de una aplicación (véase también § Bibliotecas de AppleScript ). El editor de AppleScript también permite editar y ejecutar directamente algunos de los lenguajes de OSA.
JavaScript para la automatización
En OS X Yosemite y versiones posteriores de macOS, el componente JavaScript para automatización ( JXA ) sigue siendo la única alternativa seria de lenguaje OSA a AppleScript, [ 14 ] aunque las versiones para Macintosh de Perl , Python , Ruby y Tcl admiten métodos nativos para trabajar con eventos de Apple sin ser componentes OSA. [ 30 ] : 516
JXA también proporciona una interfaz de lenguaje externo Objective-C (y lenguaje C). [ 14 ] Al ser un entorno basado en el motor JavaScriptCore de WebKit, el conjunto de características de JavaScript está sincronizado con el motor del navegador Safari del sistema. JXA proporciona un sistema de módulos JavaScript y también es posible usar módulos CommonJS a través de browserify. [ 41 ]
Véase también
- ARexx – Intérprete del lenguaje Rexx en un ordenador Amiga
Referencias
- 1 2 3 Cook, William (2007). "AppleScript" (PDF) . Actas de la tercera conferencia ACM SIGPLAN sobre la historia de los lenguajes de programación . Association for Computing Machinery . págs. 1–21 . doi : 10.1145/1238844.1238845 . ISBN 9781595937667. S2CID 220938191 .
- ↑ Apple Inc. (2022). Editor de scripts (versión 2.11). Consultado el 11 de noviembre de 2022.
- ↑ "Fecha de lanzamiento de OS X 10.10 Yosemite" . 16 de octubre de 2014. Consultado el 16 de noviembre de 2014 .
- 1 2 3 Goldstein, Adam (2005). AppleScript: el manual que faltaba . Sebastopol, CA: O'Reilly Media . ISBN 0596008503OCLC 56912218
- 1 2 3 4 5 6 7 8 Sanderson, Hamish; Rosenthal, Hanaan (2009). "Interacting with the Unix Command Line". Learn AppleScript (3.ª ed.). Berkeley: Apress . pp. 863–896 . doi : 10.1007/978-1-4302-2362-7_27 . ISBN 9781430223610OCLC 308193726
- ↑ Flynn, Laurie (27 de febrero de 1989). "Apple sopesa estandarizar HyperTalk" . InfoWorld . Vol. 11, n.º 9, pág. 31.
- ↑ "Referencia de comandos de la Guía del lenguaje AppleScript: ejecutar scripts de shell" . developer.apple.com . Consultado el 15 de septiembre de 2019 .
- ↑ "Los mayores éxitos de Apple: 30 productos importantes" . macworld.com . Consultado el 12 de septiembre de 2019 .
- ↑ Gruber, John (marzo de 2013). "La improbable persistencia de AppleScript" . Macworld . 30 (3): 100.
- ↑ Lovejoy, Ben (17 de noviembre de 2016). "Sal Soghoian dice 'pregúntenle a Apple' sobre el futuro de la automatización de usuarios de Mac mientras la compañía elimina un puesto" . 9to5mac.com . Recuperado el 8 de mayo de 2017 .
- ↑ Evans, Jonny (17 de noviembre de 2016). "¿De verdad quiere Apple acabar con Automator y AppleScript? El despido sensacional de un veterano gurú del desarrollo de Apple causa conmoción en la comunidad Mac" . Computerworld.com . Consultado el 8 de mayo de 2017 .
- ↑ Gamet, Jeff (23 de noviembre de 2016). "La intención de Apple no es la misma que comprometerse con la automatización de Mac" . macobserver.com . Consultado el 8 de mayo de 2017 .
- ↑ "Aplicaciones programables" . developer.apple.com . Consultado el 26 de julio de 2018 .
- 1 2 3 Siracusa, John (16 de octubre de 2014). "OS X 10.10 Yosemite: La reseña de Ars Technica: automatización de JavaScript" . Ars Technica . Recuperado el 8 de mayo de 2017 .
- ↑ "Página principal de Smile and SmileLab" . satimage.fr . Consultado el 8 de mayo de 2017 .
- ↑ "ASObjC Explorer 4 descontinuado" . macosxautomation.com . Archivado del original el 21 de junio de 2017. Consultado el 8 de mayo de 2017 .
- ↑ "Diario de Mark Alldritt » FaceSpan" . blog.latenightsw.com . Consultado el 8 de mayo de 2017 .
- ↑ "Guía del lenguaje AppleScript: Referencia de acciones de carpeta" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ Miller, Dan (22 de diciembre de 2010). "Reseña de la cápsula: Hazel 2.3" . Macworld.com . Consultado el 8 de mayo de 2017 .
- ↑ Beam, Brian (10 de febrero de 2015). "Análisis de Alfred: Este lanzador de aplicaciones para Mac sigue brillando, pero Alfred Remote no está a la altura" . Macworld.com . Consultado el 10 de mayo de 2017 .
- ↑ Frakes, Dan (2 de junio de 2011). "Reseña de la cápsula: FastScripts 2.5" . Macworld.com . Consultado el 8 de mayo de 2017 .
- ↑ Breen, Christopher (4 de junio de 2013). "Mac Gems: Keyboard Maestro 6 es un genio en tareas repetitivas" . Macworld.com . Consultado el 10 de mayo de 2017 .
- ↑ Breen, Christopher (7 de mayo de 2010). "Reseña de la cápsula: QuicKeys 4" . Macworld.com . Consultado el 8 de mayo de 2017 .
- ↑ "AppleScripts – Quicksilver Wiki" . qsapp.com . Consultado el 10 de mayo de 2017 .
- ↑ Fleishman, Glenn (12 de junio de 2015). "Reseña de TextExpander 5" . Macworld.com . Consultado el 8 de mayo de 2017 .
- ↑ "Guía de scripting de automatización para Mac: Uso del menú de scripts del sistema" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ "osascript(1) Mac OS X Manual Page" . www.unix.com . Consultado el 23 de julio de 2024 .
- ↑ "Bibliotecas de AppleScript" . macosautomation.com . Archivado del original el 26 de julio de 2020. Consultado el 8 de mayo de 2017 .
- ↑ "WWDC 2013 Sesión 416: Presentación de las bibliotecas de AppleScript" . asciiwwdc.com . Consultado el 8 de mayo de 2017 .
- 1 2 Neuburg, Matt (2006). AppleScript: la guía definitiva (2.ª ed.). Pekín: O'Reilly Media . ISBN 0596102119OCLC 68694976
- ↑ Tsai, Michael (29 de septiembre de 2014). "AppleScript y Yosemite" . mjtsai.com . Consultado el 9 de mayo de 2017 .
- ↑ "Notas de la versión de AppleScriptObjC" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ Waldie, Ben (6 de septiembre de 2012). "Creación de una aplicación básica de AppleScriptObjC (Cocoa-AppleScript) con Xcode" . peachpit.com . Consultado el 9 de mayo de 2017 .
- ↑ Tabla adaptada de: Naganoya, Takaaki. "ASObjCExtras Scripting Guide" (PDF) . piyocast.com . Archivado (PDF) del original el 9 de octubre de 2022. Recuperado el 9 de mayo de 2017 .
- ↑ "Introducción al tutorial de acciones de AppleScript de Automator" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- 1 2 "Nota técnica TN1164: Adiciones de scripting para Mac OS X" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ "Notas de la versión de AppleScript: Cambios en la versión 10.5" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ "Archivo POSIX — Referencia de clases — Guía del lenguaje AppleScript" . developer.apple.com . Consultado el 8 de enero de 2018 .
- ↑ "Guía del lenguaje AppleScript: Controladores en aplicaciones de script" . developer.apple.com . Consultado el 21 de julio de 2013 .
- ↑ "Introducción a AppleScript: Arquitectura de scripting abierta" . developer.apple.com . Consultado el 8 de mayo de 2017 .
- ↑ "Importación de scripts" . GitHub . JXA-Cookbook. 6 de diciembre de 2019. Consultado el 9 de diciembre de 2019 .
Lecturas adicionales
- "Guía del lenguaje AppleScript" . developer.apple.com . 2016. Consultado el 9 de mayo de 2017 .
- Munro, Mark Conway (2010). AppleScript . Referencia para desarrolladores. Indianápolis: Wiley. ISBN 978-0-470-56229-1OCLC 468969567
- Rosenthal, Hanaan; Sanderson, Hamish (2010). Aprende AppleScript: La guía completa para la creación de scripts y la automatización en Mac OS X (3.ª ed.). Berkeley: Apress . doi : 10.1007/978-1-4302-2362-7 . ISBN 978-1-4302-2361-0OCLC 308193726
- Soghoian, Sal ; Cheeseman, Bill (2009). Apple Training Series: AppleScript 1-2-3 . Apple Pro training series. Berkeley: Peachpit Press . ISBN 978-0-321-14931-2OCLC 298560807
- Cook, William (2007). "AppleScript" (PDF) . Actas de la tercera conferencia ACM SIGPLAN sobre la historia de los lenguajes de programación . ACM. págs. 1–21 . CiteSeerX 10.1.1.86.2218 . doi : 10.1145/1238844.1238845 . ISBN 9781595937667. S2CID 220938191 .
- Ford Jr., Jerry Lee (2007). Programación en AppleScript para principiantes absolutos . Boston: Thomson Course Technology . ISBN 978-1-59863-384-9OCLC 76910522
- Neuburg, Matt (2006). AppleScript: La guía definitiva (2.ª ed.). Pekín; Farnham: O'Reilly Media . ISBN 0-596-10211-9OCLC 68694976
- Goldstein, Adam (2005). AppleScript: El manual que faltaba . Serie Manual que faltaba. Sebastopol, CA; Farnham: O'Reilly Media. ISBN 0-596-00850-3OCLC 56912218
- Trinko, Tom (2004). AppleScript para Dummies . Serie Para Dummies (2.ª ed.). Hoboken, NJ: Wiley. ISBN 978-0-7645-7494-8OCLC 56500506
Enlaces externos
- "Introducción a AppleScript" . developer.apple.com . 2007. Consultado el 7 de noviembre de 2020 .
- "AppleScript para programadores de Python (tabla comparativa)" . aurelio.net . 2005. Consultado el 9 de mayo de 2017 .
- "Scripts de Apple de Doug para iTunes" . dougscripts.com . Consultado el 9 de mayo de 2017 .
- "Comunidad de AppleScript para MacScripter" . macscripter.net . Consultado el 9 de mayo de 2017 .
- Software de automatización
- Lenguajes de scripting
- Desarrollo de sistemas operativos Macintosh
- Desarrollo de macOS
- Software de Apple Inc.
- Software propietario
- Lenguajes de programación
- Lenguajes de programación de alto nivel
- Lenguajes de programación creados en 1993
- Software de 1993
- Lenguajes de programación dinámicos
- Lenguajes de programación de tipado dinámico