Qual deve ser o manipulador applescript nas mensagens. Scripts para Mac OS X: Introdução ao AppleScript

15.05.2022

Neste artigo, você aprenderá o que é o AppleScript, por que e quem precisa dele, como você pode automatizar os aplicativos de outras pessoas e adicionar a capacidade de automatizar os seus.

Automatize

Freqüentemente, existem tarefas para as quais é irracional criar um projeto separado em uma linguagem compilada. Por exemplo, quando você precisa criar rapidamente um código que deve simplesmente fazer um trabalho específico - sem nenhuma decoração de GUI, lidando com todos os tipos de exceções, otimizações e assim por diante. É aqui que entram as linguagens de script - o shell, Perl, PHP e assim por diante, você sabe. Todos eles (bem, quase todos) também estão disponíveis no Mac OS X. Mas, além das linguagens de script geralmente aceitas, este sistema operacional também possui uma linguagem de script especial focada especificamente no Mac OS X e intimamente relacionada a ele . Este é o AppleScript.

O AppleScript está no sistema desde o System 7. Surgindo do projeto HyperCard (que continha a linguagem de script HyperTalk, muito semelhante ao inglês natural), o AppleScript foi originalmente criado para fornecer comunicação entre tarefas, bem como para controlar a operação de terceiros aplicações de terceiros. Por si só, o AppleScript tem uma funcionalidade bastante modesta: nessa linguagem, até mesmo scripts para executar tarefas relativamente simples geralmente parecem chamadas para outros aplicativos. No entanto, após uma revisão significativa do sistema na transição para a linha Mac OS X, a linguagem AppleScript tornou-se mais flexível e poderosa, e a nova estrutura Cocoa permitiu que os desenvolvedores incluíssem automação AppleScript em seus aplicativos com o mínimo de esforço.

Cenário Simples

Usaremos o Editor de Script padrão para editar e executar scripts. Você pode encontrá-lo na pasta /Application/AppleScript. Primeiro, vamos escrever um script "HelloWorld" simples.

exibir o alerta "Hello World!" # Mostrar caixa de diálogo
say "Hello World" # Saída para colunas

Acho que não há necessidade de explicar aqui, mas gostaria de observar o acesso extremamente simples ao sintetizador de fala do AppleScript usando o comando say. Esta é a comunicação real com o usuário no estilo da Apple :). Claro, esta caixa de diálogo pode ser facilmente personalizada. Por exemplo, adicione os botões necessários:

Painel com botões adicionais

exibir o alerta "Hello World!" botões("Olá", "Tchau")
definir resposta para o botão retornado do resultado
se a resposta for "Olá" então
...
outro
...
fim se

Agora vamos escrever algo mais útil. Por exemplo, vamos deixar o usuário selecionar um arquivo e ler seu conteúdo:

# Painel de seleção de arquivos
defina o arquivo como (escolha o arquivo com o prompt "Selecione um arquivo para ler:" do tipo ("TEXT"))
abra para acessar o arquivo

Lendo o conteúdo

definir fileContents para (leia o arquivo)
fechar acessar theFile

Esses exemplos mostram claramente a ideia principal do AppleScript - é muito próximo do inglês vivo. Portanto, ler scripts é fácil, mesmo para quem está longe de codificar. Cada comando de verbo pode ser complementado com substantivos modificadores e parâmetros.

Interação com aplicativos

Para se comunicar com outros aplicativos, o AppleScript usa um mecanismo de mensagem:

diga ao aplicativo "Microsoft Word"
desistir
acabar diga

Usando o comando tell, selecione o aplicativo para o qual enviaremos uma mensagem. Neste caso, estamos solicitando a saída do MS Word. Qualquer número de comandos pode ser enviado no bloco "tell - end tell". As mensagens enviadas ao aplicativo podem ser mais específicas. Tudo depende de quais comandos foram implementados por seus desenvolvedores. O iTunes, por exemplo, exporta alguns comandos e propriedades para o ambiente AppleScript:

Iniciando a lista de reprodução desejada no iTunes

diga ao aplicativo "iTunes"
reproduza a lista de reprodução chamada "Meu favorito"
acabar diga

Você pode descobrir o conjunto de mensagens e tipos de dados que um aplicativo exporta para o ambiente AppleScript observando sua terminologia (o arquivo AppName.scriptRerminology nos recursos do aplicativo). Para isso, no Editor de Scripts, vá até o menu “Arquivo - Abrir Dicionário - ...”, e selecione o aplicativo desejado.

Para facilitar o trabalho com as classes e comandos que o aplicativo exporta, eles são organizados em seções. Todos os aplicativos que suportam scripts têm pelo menos duas seções: uma padrão e outra mais específica para esta aplicação Seções. A seção padrão contém um conjunto de comandos padrão suportados por qualquer aplicativo do Mac: abrir, imprimir, fechar e sair. O conteúdo das seções restantes depende da imaginação dos desenvolvedores.

Executando o AppleScript de dentro do seu aplicativo

Se você estiver escrevendo um aplicativo em Objective-C/Cocoa, pode ser mais conveniente fazer algumas coisas usando AppleScript. Para criar e executar scripts em aplicações Cocoa, existe a classe NSAppleScript. Aqui está um exemplo simples de seu uso - a implementação de obter a linha de status do usuário do aplicativo iChat.

NSAppleScript *iChatGetStatusScript = nil;
iChatGetStatusScript = [ initWithSource: @"informar ao aplicativo "iChat" para obter a mensagem de status"];
NSString *statusString = [stringValue];

É possível que o mesmo possa ser feito de outra forma, sem utilizar o script gerado em tempo de execução, mas é improvável que o código alternativo pareça mais simples que este. Se os scripts forem grandes, você pode armazená-los nos recursos do pacote e lê-los, se necessário.

Automação em um aplicativo Cocoa

É muito útil adicionar suporte a scripts em seus aplicativos Cocoa, porque se seu aplicativo tiver uma interface para AppleScript, o usuário, escrevendo algumas linhas em AppleScript, poderá personalizá-lo para suas necessidades e integrá-lo a outros aplicativos que ele instalou e, então, por exemplo, automatizar tarefas rotineiras. Para exportar tipos e comandos para o ambiente AppleScript, eles devem estar descritos em arquivos especiais. É possível fazer isso nos arquivos .scriptSuite e .scriptTerminology, ou em um único arquivo .sdef. Em ambos os casos, os arquivos estão no formato XML, mas o sdef é mais fácil de trabalhar.

O conteúdo do arquivo scriptTermonology é exibido no Editor de script ao visualizar o dicionário do aplicativo. Este arquivo contém a descrição dos objetos exportados para AppleScript.

Abrindo o arquivo scriptSuite no Plist Editor, você pode ver que ele contém as seguintes seções principais:

  • AppleEventCode - um código de quatro letras que identifica o aplicativo para o ambiente AppleScript (o código deve ser único dentro de um sistema);
  • Nome - o nome da seção que contém os comandos e classes exportados.

Não faz muito sentido desmontar a estrutura interna desses arquivos, pois provavelmente você só terá que lidar com arquivos sdef.

exemplo de arquivo sdef
















sdef mistura terminologia de script com descrição detalhada comandos e tipos, que podem ser encontrados em arquivos .scriptingSuit. Vamos colocar isso em prática criando um aplicativo Cocoa que suporte AppleScripting. Para fazer isso, no novo projeto Cocoa, adicione o sinalizador Scripting and OSAScriptingDefinition ao arquivo Info.plist com o nome do nosso arquivo sdef:

...
NSAppleScriptEnabled

OSAScriptingDefinition
Scrtipting.sdef

Vamos adicionar um arquivo Scripting.sdef ao projeto com o seguinte conteúdo:












Portanto, no AppleScript, temos uma propriedade disponível - myprop. Resta escrever o código ObjC que processará a leitura dessa propriedade dos scripts. Para isso, é necessário criar a categoria NSApplication, pois esta é a classe que escolhemos como destinatário das mensagens dos scripts.

#importar
@interface NSApplication (Script) - (NSString *) myprop;
@fim
@implementation NSApplication (Script) - (NSString *) myprop
{
return @"Esta é minha propriedade";
}

Se agora nos voltarmos para as propriedades de nosso aplicativo do AppleScript, veremos nossa propriedade e seu valor entre elas:

diga ao aplicativo "Scripting"
propriedades
acabar diga

Conclusão

Obviamente, é impossível descrever aqui todas as possibilidades do AppleScript e sua interação com os aplicativos Cocoa. Sim, isso não é necessário - existem manuais para isso. E nós, de nossa parte, continuaremos a série de artigos sobre codificação para plataformas Apple e contaremos muito mais coisas novas e interessantes.

Você já está usando o AppleScript? Não sabe o que é? Você acha que isso não serve para você? Ou, quem sabe, a lembrança das aulas de informática da escola faz com que você tenha um ataque de alergia à simples menção da palavra “programa”? Então, você fez a coisa certa ao abrir este artigo.

Espero que ajude você a entender essa ferramenta muito útil e que o tempo gasto na leitura compense muito mais tarde.

Muitas vezes, ao trabalhar com um determinado programa, temos que executar as mesmas ações várias vezes: pressionar as mesmas teclas, selecionar o mesmo comando no menu, inserir os mesmos valores nas caixas de diálogo e vem o AppleScript. Descrevemos a sequência de nossas operações na forma de um programa “script”, iniciamos e - tomamos café com calma, ocasionalmente verificando se o processamento do último arquivo três mil setecentos e oitenta e nove terminou. Algo semelhante existe na forma de arquivos DOS BAT ou scripts de shell UNIX. Mas o AppleScript tem uma vantagem importante: tanto o Finder quanto um grande número "entendem" esse idioma. programas aplicativos, e o script pode acessá-los todos por sua vez.

A linguagem que usaremos (também chamada de AppleScript) é muito próxima do inglês comum. Por exemplo, o script pode ter esta aparência:

dizer aplicativo "Finder"
fazer
acabar diga

Acho que todos entenderam o que ele faria. Mas para aprender a escrever seus próprios scripts, você terá que entender alguns conceitos.

Objetos, propriedades, eventos...

AppleScript é uma linguagem orientada a objetos. Ou seja, tudo que "existe" no seu computador, ele considera objetos(objetos). Um objeto pode consistir em outros objetos, ser incluído em outro objeto, referir-se a outro objeto. Por exemplo, Finder é um objeto. Possui objetos "subordinados" - pastas, arquivos, janelas. O editor Tex-Edit possui um objeto de texto, formado por palavras, linhas, parágrafos, etc. Saber como os objetos se relacionam (sua hierarquia) é muito importante, pois o comando é passado “através da cadeia”. Existe uma espécie de “vertical de poder”: damos uma ordem ao Finder, ele - para a pasta, aquele - para a pasta aninhada nela, e assim por diante, até chegar ao arquivo desejado. E o "relatório de desempenho" seguirá novamente a mesma cadeia - na direção oposta.

Objetos do mesmo tipo (por exemplo, todas as pastas) formam Aula(aula). Cada objeto tem algum conjunto propriedades(propriedades) que o distingue de outro. Por exemplo, cada arquivo tem um nome, rótulo, tipo, data de criação, versão e mais de uma dezena de características. O script pode alterar alguns deles, alguns só podem ser lidos.

Uma classe (chamada "descendente") pode herdar as propriedades de outra classe ( "antepassado"). Por exemplo, pastas e arquivos têm um ancestral comum - o elemento (item).

Agora vamos ver nosso exemplo, expandindo-o um pouco:

- qualquer texto escrito após os "dois menos",
- é considerado um comentário;
- o computador não presta atenção nisso
dizer aplicativo "Finder"
- começa com a palavra dizer grupo de comando,
- relacionado a um objeto
fazer nova pasta na área de trabalho com propriedades (nome:"My!", label index:2)
acabar diga - e assim termina o grupo de comandos
dizer aplicativo "Finder" contar item "Meu!"
abrir
definir seu nome para"Só para mim"
acabar diga

Primeiro dizemos ao Finder para criar um novo objeto de pasta localizado na Tabela. Algumas das propriedades são definidas no comando (o nome da pasta e seu rótulo de cor), o restante será atribuído pelo computador por padrão. Em seguida, dizemos ao Finder para comandar sua pasta (e somente desta forma: “o vassalo do meu vassalo não é meu vassalo”) para abrir e alterar o nome.

Mas seria hora de passar do raciocínio teórico para algo mais tangível. É hora de iniciar o Editor de scripts.

Editor de script

Vários programas foram criados para trabalhar com AppleScript, entre os quais existem ferramentas de desenvolvimento muito avançadas. Posteriormente, você provavelmente adquirirá um deles. Mas para o conhecimento inicial, o editor que faz parte do Mac OS é suficiente para nós.

A janela do Editor de Scripts é dividida em duas partes: um comentário é escrito na parte superior (é exibido na tela antes da execução do script) e o programa é escrito na parte inferior. Vamos tentar digitar nosso exemplo (claro, você pode fazer sem meus comentários). Em seguida, clique no botão "Verificar sintaxe". Se você cometeu algum erro, uma caixa de explicação aparecerá. Mas, provavelmente, tudo ficará bem - e após uma pequena pausa, o texto mudará um pouco de aparência. Qual fonte os diferentes elementos do script serão destacados neste caso pode ser configurado usando o comando "AppleScript Formatting" do menu "Editar". Agora você pode clicar no botão "Executar". Funcionou?

O script escrito pode ser salvo de diferentes maneiras: apenas texto original(Texto) ou já roteiro compilado(Script Compilado) - pronto para execução por um editor de script ou algum outro programa, finalmente - na forma de um independente (nota de rodapé: claro, não é bem assim - não fará nada sem o AppleScript instalado) programa applet(Aplicativo). Você pode fazer o script "somente para execução" (Run-only). Só não se esqueça neste caso de guardar - para si - e arquivo original. Caso contrário, não apenas os concorrentes ansiosos para infringir seus direitos autorais, mas também você mesmo não conseguirá acessar o código-fonte.

Dicionários, dicionários, dicionários...

“Bem, tudo bem”, você provavelmente pensa, “usar o editor é fácil, ler scripts prontos também não é difícil. Mas como você os escreve? Onde obter todas essas classes, comandos, propriedades?” A resposta é simples: você precisa olhar para dicionário. Cada programa que suporta o trabalho com AppleScript, bem como ScriptingAddition (falaremos sobre “complementos” mais adiante) contém Pequena descrição todos os seus objetos e comandos reconhecidos. Você pode visualizar este dicionário diretamente do editor de script - selecionando "Abrir Dicionário" no menu "Arquivo" ou arrastando programa desejado para a foto do editor.

Os programas Macintosh podem suportar AppleScript em três níveis diferentes.
Scriptable- o programa pode executar comandos descritos na forma de um script.
Gravável- é possível gravar comandos executados no programa. Vamos criar um novo script, iniciar a gravação (com o botão "Gravar"), realizar, por exemplo, manualmente as ações necessárias no Finder, parar a gravação ("Parar"). Isso é tudo. Portanto, é muito conveniente fazer os preparativos do script.
anexável- o script pode ser executado diretamente do programa, sendo "anexado" ao menu ou a qualquer objeto da janela. Exemplos de tais programas: AppleWorks, Tex-Edit, FileMaker Pro.

Vamos abrir, por exemplo, o dicionário Finder.

À esquerda, você vê uma lista de todos os "termos" definidos no programa. Observe que alguns deles estão em itálico. Estes são objetos. Todos os outros são equipes. Ao clicar na palavra desejada, você pode ler uma breve referência.

O que, por exemplo, você pode aprender sobre "Container"? Primeiro, vemos: "Contêiner de classe: Um item que contém outros itens". Ou seja, é um elemento que contém outros elementos. E se você observar as descrições das próximas aulas, ficará claro que o "contêiner" é um conceito que inclui discos, pastas e a Mesa (Desktop) e a Lixeira (Lixeira). Tem as propriedades comuns desses objetos, em muitos aspectos semelhantes. E na "árvore genealógica" - a hierarquia das classes - está seu ancestral.

Leia. "Forma plural: recipientes". Forma plural? Nós estudamos gramática inglesa? Sim e não. Já mencionei que o AppleScript é o mais próximo possível da linguagem natural. E se quisermos processar todos os objetos de uma determinada classe, podemos escrevê-la, como deveria ser em inglês, “every container” ou “containers”.

Como você já sabe, um objeto pode conter outros objetos. Quais e como eles diferem uns dos outros são descritos na próxima seção do dicionário - “Elementos” (Elementos). Um contêiner, como você pode ver, pode conter objetos de uma dúzia e meia de classes diferentes, por exemplo, outros contêineres, pastas, arquivos de documentos e programas, etc. E você pode especificar um elemento específico de uma classe por nome (por nome) ou por número de série (por índice numérico).

Bem, e finalmente, a última seção é "Propriedades" (Propriedades). Aqui vemos, primeiramente, que a classe "Container" é sucessora da classe "Element" ( item ), ou seja, tem todas as suas propriedades. Mas esta classe também tem alguns próprios. Observe: alguns deles são marcados como "" (somente leitura), essas propriedades não podem ser alteradas pelo comando AppleScript.

Agora vamos ver como os comandos são descritos no dicionário. Por exemplo, vamos pegar o "Make" (criar) já familiar para você dos exemplos de scripts. No topo da página - o objetivo do comando (criar novo elemento). Então - como está escrito (sintaxe) e quais parâmetros possui. Observe que alguns parâmetros estão entre colchetes. Então no dicionário eles significam opcional opções. Ao compor um script, podemos fazer sem eles, mas se os usarmos, não precisamos colocar colchetes. Encerra a ajuda para um comando especificando-o resultado(resultado). Em nosso exemplo, será uma "referência" (reference) ao objeto criado.

Aqui você vai. Você já pode tentar escrever algum script simples. Então…

Oh criador!

Acho que você sabe que todo arquivo no Macintosh tem dois atributos - um tipo e um código criador - que permitem ao Finder decidir como lidar com esse arquivo. Não é segredo que muitas vezes - por exemplo, após a transmissão pela Internet - esses atributos são perdidos. Claro, existem muitos programas que podem alterá-los. Mas vamos tentar criar nosso próprio utilitário, usando apenas o que já está incluído no Mac OS.

Vamos começar com a opção mais simples. Suponha que precisamos atribuir o arquivo letter.txt localizado na Tabela, atribuir o tipo "TEXT" e o código do criador "ttxt" (SimpleText).

Selecione o objeto de arquivo no dicionário Finder. Encontramos as propriedades de que precisamos: tipo de arquivo e tipo de criador. Para alterar o valor de um imóvel, utilize o “setraquo; (instalar). Portanto, todo o script deve ficar mais ou menos assim:

dizer aplicativo "Finder" contar arquivo "carta.txt"
definir seu tipo de arquivo para"TEXTO"
definir seu tipo de criador para"ttxt"
acabar diga

Ou assim:

dizer aplicativo "Finder"
definir tipo de arquivo de arquivo "carta.txt" para"TEXTO"
definir tipo de criador de arquivo "carta.txt" para"ttxt"
acabar diga

Assim, como você pode ver, você pode ordenar o arquivo para alterar suas (suas) propriedades (em este exemplo a palavra "its" pode ser omitida, pois o objetivo do comando é definido de forma inequívoca, mesmo sem ele), ou - o programa Finder pode alterar as propriedades do objeto subordinado.

Eu defino conscientemente a condição de que o arquivo esteja na área de trabalho. Caso contrário, precisávamos de uma "cadeia" mais longa de objetos subordinados (algo como "dizer ao aplicativo "Finder" para dizer ao disco "Macintosh HD" para dizer à pasta "lição" para dizer ao arquivo "letter.txt""). Ou - para a segunda versão do script - uma indicação caminho completo: "arquivo "Macintosh HD:lição:letra.txt"" (lembre-se: o caminho no Mac OS é escrito com dois pontos).

Bem, o roteiro está escrito. Ele trabalha. Mas, francamente, não há benefício nisso - afinal, para cada próximo arquivo, você precisa alterar o texto do próprio script. Nossa, facilitou o trabalho! Precisamos melhorar nosso programa. Vamos ensiná-lo a perguntar ao usuário qual arquivo processar. Abra o dicionário do Finder, veja e aqui estão eles! Nada adequado. A Apple cometeu esse erro? De jeito nenhum…

“Você não tem o mesmo, mas com botões de madrepérola?”

Open Script Architecture (OSA - Open Script Architecture) permite que você adquira quase todos os elementos necessários da linguagem. Claro, se alguém se preocupou em escrever "Adição"(Scripting Addition ou OSAX) que descreve tal objeto e os comandos correspondentes. Esses complementos estão localizados na pasta Scripting Additions localizada na System Folder (anteriormente em Extensions). Qualquer script pode usá-los, independentemente de qual programa ele comanda atualmente.

Vamos abrir o dicionário Standard Additions (para acessar rapidamente a pasta Scripting Additions, um botão especial é fornecido na caixa de diálogo Open Dictionary). Aqui está - o comando "escolher arquivo" (selecione um arquivo). O resultado de seu trabalho será um link para o arquivo selecionado pela pessoa na caixa de diálogo Abrir padrão. Armazenaremos esse link em uma variável, que chamaremos, por exemplo, de MeuArquivo.

Nosso script ficará assim:

dizer aplicativo "Finder"
definir Meu arquivo para escolher arquivo
definir tipo de arquivo de Meu arquivo para"TEXTO"
definir tipo de criador de Meu arquivo para"ttxt"
acabar diga

Software totalmente funcional. Mas é possível torná-lo mais conveniente? Por que executar o script separadamente e selecionar o nome do arquivo na caixa de diálogo - não seria melhor usar o método Drag'n'Drop? Tudo está ao nosso alcance!

Escrevendo uma gota

Então, o que queremos obter e como alcançá-lo.

  1. O programa deve funcionar independentemente do editor de script. Com isso fica tudo claro, já sabemos que para isso precisa ser salvo como applet.
  2. O objetivo do script é alterar as propriedades de um determinado arquivo. Esta parte já está pronta.
  3. O arquivo, "puxado" na imagem do script, deve ser processado. Isto é onde a diversão começa. Com objetos "vivendo" em nosso computador, várias coisas acontecem constantemente. eventos. Por exemplo, o arquivo pode ser movido, copiado ou aberto. O programa - inicie, execute qualquer comando ou não faça nada, finalmente - termine. Para que o objeto “saiba” como reagir a um determinado evento, é necessária uma sub-rotina especial - "manipulador"(manipulador). Quando arquivos, pastas ou unidades são colocados em um miniaplicativo, o Finder envia uma mensagem de comando "Abrir" e uma lista de objetos "arremessados". É para este evento que teremos que escrever um handler.

No caso mais simples, ficará assim:

sobre abra a lista de arquivos - a palavra "on" inicia o manipulador de eventos
- a princípio o script funciona sozinho, sem afetar nenhum programa
definir Meu arquivo para item 1 de Lista de Arquivos
dizer aplicativo "Finder" - agora comandamos o Finder
definir tipo de arquivo de Meu arquivo para"TEXTO"
definir tipo de criador de Meu arquivo para"ttxt"
acabar diga
fim abrir - não se esqueça de indicar que o manipulador terminou

Para armazenar temporariamente a lista, usamos a variável FileList. As variáveis ​​podem ser nomeadas por qualquer combinação de letras latinas, mas é desejável que pelo nome você possa entender o que essa variável significa.

Como você pode ver, o primeiro elemento da lista passada ao executar o script está sendo processado. E o resto? Nosso programa simplesmente não presta atenção a eles. Não é difícil adivinhar que o próximo passo no caminho para a excelência será o processamento de um monte de arquivos de uma só vez.

Uma, uma, mais uma vez...

Até agora, todos os comandos de nossos scripts foram executados um a um na ordem em que foram escritos. Agora precisamos repetir as mesmas ações várias vezes seguidas. Teremos que organizar uma estrutura especial - ciclo. AppleScript tem uma variedade de comandos de controle para isso. Você pode repetir as ações com antecedência um número predeterminado de vezes ou executá-las até que uma determinada condição seja atendida. Mas quase todas as linguagens de programação possuem esses ciclos. Em nossa tarefa, outro é ideal - "repita para cada elemento da lista". Com ele, o script terá o seguinte formato:

sobre abra a lista de arquivos
repita com Meu arquivo em Lista de Arquivos - é assim que se escreve o início do ciclo
dizer aplicativo "Finder"
definir tipo de arquivo de Meu arquivo para"TEXTO"
definir tipo de criador de Meu arquivo para"ttxt"
acabar diga
fim da repetição - o final da estrutura de controle deve ser marcado
fim abrir

O que mais falta em nosso programa para se tornar bastante profissional? E ela sente falta "proteção tolo". Afinal, você pode “jogar” pastas e atalhos na imagem do script, mas deve funcionar apenas com arquivos comuns.

Quem você quiser, escolha

Portanto, ao iterar sobre os elementos da lista, você precisa determinar o que é cada um deles. Somente se um arquivo regular for capturado - altere suas propriedades. Escolher se quer fazer ou não qualquer operação, permite mais uma estrutura de controle - operador condicional se. Você pode determinar se um objeto é uma pasta ou um atalho obtendo informações sobre ele com o comando "info for" do Standard Additions. Seu resultado será um objeto da classe "informações do arquivo". Aqui estão suas propriedades - "pasta?" (pasta) e "atalho?" (alias) - vamos verificar. Como precisamos que o elemento não seja uma pasta E não foi um atalho, vamos conectar duas condições com a operação lógica "e" (quando basta cumprir qualquer uma das condições - OU primeiro, OU o segundo - use um monte de "ou"). Em geral, como resultado do nosso raciocínio, obtivemos o seguinte script:

sobre abra a lista de arquivos
repita com Meu arquivo em Lista de Arquivos
definir theInfo para informações para MyFile
se(pasta de theInfo é falso) e ¬
(aliás de theInfo é falso) então
dizer aplicativo "Finder"
definir tipo de arquivo de Meu arquivo para"TEXTO"
definir tipo de criador de Meu arquivo para"ttxt"
acabar diga
fim se
fim da repetição
fim abrir

Observe que todas as condições em uma instrução If devem ser escritas em uma linha. Para facilitar a leitura do texto do programa, pode ser útil "dobrar" uma linha longa, como é feito neste exemplo. Para fazer isso, pressione a combinação de teclas "Opção-Retorno". O caractere de continuação "¬" aparecerá no texto.

Claro, para esta pequena lição, só pude apresentar a você os métodos mais simples de trabalhar com o AppleScript. Mas acho que você viu que não há nada complicado nisso. Tentar! Espero continuar este tópico em artigos futuros.

O AppleScript é uma linguagem de programação poderosa que remonta ao Mac OS 7. No entanto, apesar de sua maturidade, os programadores de Mac experientes frequentemente criticam o AppleScript por ser muito simples, fácil de aprender e muito semelhante ao inglês comum.

Claro, você gostaria que uma linguagem de computador tivesse exatamente essas qualidades - se, é claro, você precisar de uma linguagem de computador. AppleScript é a linguagem de programação mais simples com a qual você pode automatizar seu Mac, mesmo se você for um usuário simples e não um cientista da computação.

Os programas AppleScript (chamados de scripts ou scripts) podem ser considerados robôs de software. Um simples AppleScript pode fazer algumas tarefas mundanas, como fazer backup da pasta Documentos. Um script mais complexo pode abranger várias páginas. Na publicação profissional, onde o AppleScript é mais popular, o script pode se conectar pela Internet ao disco rígido do fotógrafo, recuperar a foto de uma pasta especificada, corrigir a cor no Photoshop, colar o resultado em um documento de layout especificado, imprimir um layout aproximado , envie uma notificação por e-mail ao editor — e tudo isso é feito automaticamente.

Mesmo sem saber, o usuário está constantemente usando a tecnologia AppleScript subjacente. Vários componentes do Mac se comunicam nos bastidores usando Apple Events, mensagens que passam instruções ou dados de programa para programa. Se o comando Mostrar original for aplicado a um alias ou o comando Obter informações for aplicado a um arquivo (pasta), o evento Apple informará ao Finder como responder a ele.

O AppleScript é superior ao Automator de várias maneiras, principalmente por causa de seu poder. E mais uma coisa: AppleScript é um tópico tão profundo que deveria ser dedicado a um livro separado. Este capítulo é apenas um delicioso aperitivo: um livro como AppleScript: The Essential Guide seria uma refeição de sete pratos.

Conselho Você pode baixar o capítulo inteiro sobre AppleScript — que apareceu em uma edição anterior deste livro — na página do CD ausente em www.missingmanuals.com.

Você não precisa escrever AppleScript para aproveitar os frutos dessa tecnologia. O Mac OS X vem com dezenas de scripts realmente úteis, e para executar qualquer um deles, basta selecionar seu nome no menu. Esse tipo de "reprodução" de um AppleScript requer exatamente tanta habilidade técnica quanto apertar um botão em um elevador.

Você pode experimentar alguns desses scripts iniciais bacanas adicionando um menu de script à barra de menus (Figura 7-16, à direita).

O menu de cenários possui 16 categorias prontas, reunindo cerca de 100 cenários; para executar um script, basta selecionar seu nome. Aqui está uma lista dos cenários mais úteis e interessantes.

Conselho Se você mantiver pressionada a tecla Shift enquanto seleciona um nome de script no menu, o Mac OS X o levará diretamente para onde o script está localizado no Finder (por exemplo, na pasta Home>Library>Scripts). Além disso, se você pressionar a tecla Option enquanto seleciona um nome, o script será aberto no Editor de scripts, onde você poderá examiná-lo ou editá-lo.

Este submenu contém apenas o script Importar endereços para copiar nomes e endereços do Entourage, Outlook Express, Palm Desktop, Eudora, Claris Emailer ou Netscape para o Catálogo de endereços. Se você tem muitos amigos, use este script para não ter que digitar novamente todos os seus nomes, números de telefone e endereços postais. (A subpasta Address Importers que acompanha oferece scripts para importar de três programas específicos.)

O submenu Basics contém três pequenos scripts úteis relacionados ao AppleScript: AppleScript Help (abre o Help Viewer e procura a palavra AppleScript); Site AppleScript (abre uma página da web AppleScript em seu navegador) Open Script Editor (abre o programa Script Editor para ler e editar scripts AppleScript).

Esta pasta contém um grupo de scripts ColorSync do tipo droplet (tal script é executado se você arrastar algo para seu ícone) de interesse para artistas, designers de sites, editores, etc.

Em alguns casos, ao selecionar um script neste menu, aparecerá uma breve mensagem informativa e em seguida uma caixa de diálogo Abrir para selecionar o arquivo gráfico a ser processado.

Outros agem imediatamente; por exemplo, o script do monitor do PC Mimic ajusta as cores da tela para corresponder a tons ligeiramente diferentes em um monitor de computador com Windows. Isso é muito útil se você estiver trabalhando em

CURSOS EXPERIENTES
Segredos do Menu Script
O menu de script exibe o conteúdo de duas pastas Scripts diferentes: uma é Home>Library>Scripts e a outra está na pasta principal Library. Os cenários retirados de sua pasta pessoal são separados por uma linha pontilhada no menu de cenários.

Esses scripts não podem apenas ser executados. Também são ideais para abri-los no Editor de Scripts (simplesmente clicando duas vezes) e analisar linha por linha como funcionam. Depois de entender a sintaxe, você pode copiar trechos de código e modificá-los para usar em seus scripts. (Editor de scripts é um programa encontrado na pasta Aplicativos > AppleScript que permite criar seus próprios scripts.)

Uma fotografia ou uma página da web e quer saber como isso vai parecer aos olhos das massas não iluminadas. (Para restaurar as cores originais, vá para a guia Cor (Cor) painel Exibição (Moniores) na janela Preferências do sistema (configurações do sistema).)

Todos esses cenários estão relacionados ao trabalho no Finder - digamos, à manipulação de arquivos e janelas. Aqui estão os mais úteis:

Adicionar a nomes de arquivo, adicionar a nomes de pastas. Esses scripts anexam um prefixo ou sufixo ao nome de cada arquivo ou pasta na janela frontal (ativa) do Finder (ou, se não houver janelas abertas, na área de trabalho). Com esses scripts, você pode adicionar a palavra "rascunho" ou "final" ou "antigo" aos nomes de todos os arquivos em uma pasta.

Substituir texto em nomes de itens permite realizar uma pesquisa de substituição nos nomes de arquivos, pastas ou ambos. Se um editor rejeitou sua proposta de livro de 45 capítulos, este script pode renomear todos os 45 capítulos de "Mouse Pad History - Random House Proposal Chapter 1" para "Mouse Pad History - Simon Proposal" & Schuster, Chapter 1".

Aparar nomes de arquivos, aparar nomes de pastas. Se você cometeu um erro ao executar o script Adicionar a nomes de arquivo, sempre pode corrigi-lo com Trim File Names. Este script remove extensões de arquivo, sufixos ou prefixos de escolha do usuário.

Digamos que você acabou de criar várias novas pastas de uma só vez. O Mac OS X nomeia essas pastas como "pasta sem título", "pasta sem título 2" etc. Mas e se você se sentir mais confortável com os nomes "pasta 1", "pasta 2" etc.? Execute o script Trim Folder Names; Digite sem título na caixa de diálogo e clique em OK.

Você provavelmente não usará scripts de Ações de Pasta extensivamente, pois o mesmo acesso exato às operações de pasta é fornecido por Control-clique em uma pasta (ou dentro de sua janela)

Esses scripts demonstram como você pode automatizar algumas tarefas relacionadas a fontes.

FontSync é a nobre tentativa da Apple de permitir velho problema editores de desktop. Então você terminou de criar um lindo boletim informativo e está levando-o para sua gráfica local para ser impresso em equipamento de alta qualidade, apenas para se ver tendo que jogar fora as impressões e começar tudo de novo - e só porque as fontes não parecem do jeito que você queria. A gráfica não tinha exatamente as fontes que você usou para preparar o documento. Ou, pior ainda, as fontes tinham exatamente os mesmos nomes, mas foram criadas por uma empresa diferente e, portanto, diferiam ligeiramente da sua em certos parâmetros.

A ideia do FontSync é avisar o usuário com antecedência sobre possíveis inconsistências. O script Create FontSync Profile cria um arquivo de perfil FontSync em alguns minutos. Este documento contém uma quantidade impressionante de informações sobre design, espaçamento e curvas de todas as fontes instaladas no sistema. Em uma gráfica, esse documento pode ser processado com um script adicional Match FontSync Profile. Ele identificará escrupulosamente as diferenças de fonte entre o Mac do usuário e as máquinas da gráfica.

Claro, esta tecnologia pressupõe muito: que os computadores Macintosh estejam instalados na gráfica, que eles possam lidar com o FontSync e também que o usuário não se esqueça de criar e transferir o perfil do FontSync para a gráfica com antecedência.

O IChat passou por uma reformulação significativa na versão 10.5 - a Apple adicionou muitos recursos interessantes (embora às vezes inúteis). Em particular, tornou-se possível executar AppleScripts como sinais quando ocorre um evento relacionado aos seus contatos. Por exemplo, você pode aceitar automaticamente convites de bate-papo de contatos individuais ou até mesmo responder a eles com uma saudação pré-definida. Você pode até controlar a reprodução de música em um Mac inserindo comandos na janela do iChat de outro Mac em sua casa. Detalhes no capítulo 21.

Esses dois cenários são de pouca utilidade. Current Date & Time exibe a data e hora atuais em uma caixa de diálogo equipada com um botão Clipboard para copiar informações prontas para colar. O Font Sampler exibe uma página listando as fontes (nomeadas no script) instaladas com o Mac OS X. (O script tornou-se menos útil porque o Font Book possui comandos de impressão integrados semelhantes).

Dois cenários neste menu merecem menção especial. A temperatura atual por código postal mostra qual é a temperatura fora da janela - Fahrenheit e Celsius. Esse é mais um motivo para não sair de casa o dia todo.

Stock Quote recebe cotações de ações da empresa selecionada com um atraso de 20 minutos. Não é tão bom quanto obter cotações em tempo real, mas é grátis.

A maioria dos scripts neste submenu resolve algumas tarefas específicas, como contar e-mails em seus e-mails. caixas de correio ou configurar um novo conta. O mais engraçado de tudo, é claro, é o script Crazy Message Text (Figura 7.17).

Os scripts nesta pasta permitem que você navegue para pastas especiais do Finder - diretamente do menu, de qualquer programa. Se a pasta que você deseja abrir não tiver um script personalizado atribuído, selecione-o na lista do script Abrir pasta especial.

Conselho Aqueles que não se importam em editar este script com o Editor de Scripts podem modificá-lo para permitir que mais de uma pasta seja selecionada e aberta ao mesmo tempo (através, digamos, de um atalho -click). Tudo o que você precisa fazer é digitar múltiplas seleções permitidas como verdadeiro logo após Escolher pasta para abrir: (no final da linha, aproximadamente no início do segundo terço do script). Não se esqueça de salvar suas alterações.

Esses scripts destinam-se a demonstrar o poder do AppleScript na impressão e criação de documentos PostScript e PDF.

Um deles, Print Window, fecha uma lacuna de longa data no Mac OS X. Ele deve imprimir uma listagem textual do conteúdo de qualquer pasta selecionada. (Reconhecidamente, é um pouco buggy.)

De acordo com a equipe Sobre esses scripts, esses 48 scripts pré-criados ajudam você a escrever scripts mais rápidos e precisos porque os trechos de código estão livres de erros de digitação e de sintaxe. À medida que melhorar, você poderá adicionar seus próprios scripts aqui com trechos de código adaptados aos scripts que você normalmente escreve para tornar seu trabalho ainda mais eficiente. (Ao criar um script no Editor de Script, você insere esses trechos de código no texto usando uma combinação de clique de controle e seleção de menu acesso rápido.)

Na maioria das vezes, os scripts fazem seu trabalho silenciosamente e despercebidos. Mas se você quiser automatizar um programa que não entende os comandos normais do AppleScript, os scripts podem "gerenciá-lo" manualmente, simulando seleções de menu, pressionamentos de botão e assim por diante.

Observação Esse recurso, chamado de scripts de interface do usuário (UI), só funcionará depois que você abrir o console de Acesso Universal do programa Preferências do Sistema e marcar a caixa de seleção Habilitar acesso para dispositivos auxiliares.

Não faz sentido executar os scripts do submenu Scripts de elemento de interface do usuário como estão: são apenas amostras que demonstram a sintaxe correta.

Este último conjunto de scripts fornece acesso rápido a alguns sites populares. A exceção é o script Download Weather Map, que baixa o mapa meteorológico atual para os Estados Unidos continentais, salva-o na área de trabalho como weathermap.jpg e o abre em Visualização.

Conselho Você pode adicionar scripts, arquivos e até endereços da Internet ao menu e, em seguida, é fácil iniciá-los a partir da barra de menus. Qualquer coisa que você arrastar para a pasta Biblioteca>Scripts aparecerá automaticamente no menu Scripts.

Por outro lado, se você começar a adicionar muitos de seus próprios itens ao menu Script, será mais conveniente remover dele as amostras da Apple. Sem problemas. Abra o utilitário AppleScript e desmarque Mostrar scripts do computador.

Trabalhando com AppleScripts pré-construídos

Ao trabalhar no menu de scripts, você logo perceberá que possui dezenas de scripts integrados gratuitos em seu Mac. O melhor é que você pode entender como eles funcionam e até modificá-los à medida que aprende gradualmente a escrever seus próprios scripts AppleScript. Você pode até copiar e usar trechos inteiros de scripts da Apple em seus próprios scripts.

Primeiro, é claro, você precisa abrir o script. A maneira mais fácil de fazer isso é abrir o menu do script, selecionar a categoria desejada e clicar com a tecla Option pressionada no nome do script desejado.

Você pode começar a aprender AppleScript assistindo a um script simples. Abra, por exemplo, o script New Application Window (na categoria Navigation Scripts) pressionando Option e clicando em seu nome. Como resultado, o Script Editor abrirá o arquivo em uma nova janela (Fig. 7.18).

Veja como esse script funciona:

Dizer ao aplicativo "Finder" informa ao Mac OS X qual programa deve executar os seguintes comandos.

Ativar traz o Finder para a frente - como se você tivesse clicado em seu ícone no Dock.

Abrir pasta "Aplicativos" do disco de inicialização instrui o Finder a abrir uma nova janela exibindo a pasta Aplicativos no disco rígido principal.

End tell diz ao Finder para cuidar de seus negócios e ignorar outros comandos do seu script.

Para testar o script, clique no botão Executar ou pressione -R.

Conselho Você pode editar este script para melhor atender às suas necessidades. Tente, por exemplo, substituir "Aplicativos" por "Usuários" para que o script abra a pasta Usuários.

Crie seus próprios AppleScripts

O Mac OS X vem com dezenas de programas - existem apenas alguns deles! Ok, algo está faltando - um metrônomo, por exemplo. Como você vai tocar piano em um ritmo constante sem ouvir os cliques rítmicos que seu Mac faz? É claro que, em caso de emergência, o metrônomo GarageBand ajudará, mas isso é disparar um canhão contra pardais.

Você pode usar o AppleScript em vez disso. Abra um novo documento no Editor de Script (Arquivo (Arquivo)> Novo (Novo) ou -N) e digite o seguinte:

exibir a caixa de diálogo "Bem-vindo ao Metrônomo AppleScript"

definir bpm para o texto retornado de (diálogo de exibição ¬

"Quantas batidas por minuto?" resposta padrão 60)

definir pausaBetweenBeeps para (60/bpm)

pausa de atrasoBetweenBeeps

Observação Você não precisa imprimir o caractere ¬. É assim que os programadores dizem: "Isso deveria ser em uma linha, mas a largura da página não era suficiente."

Quando você executa esse script, uma caixa de diálogo aparece perguntando quantas batidas por minuto o metrônomo deve contar. O número digitado (por exemplo, 120) é armazenado em uma variável de armazenamento temporário dentro do script chamado bpm.

O script calcula a pausa entre os bipes e grava essa fração de segundo na variável pauseBetweenBeeps. Se você dissesse ao script para emitir um bipe, digamos 120 vezes por minuto, a pausaBetweenBeeps seria definida como 0,5 porque deveria haver uma pausa de meio segundo entre os bipes.

Por fim, o script cria um loop infinito: bipe, pausa pela duração especificada e, em seguida, repita.

Clique no botão Executar para testar seu script e, quando estiver satisfeito com os sons, clique no botão Parar.

MINHAS TÉCNICAS FAVORITAS
Anexos da área de trabalho com um clique
Aqui está um pequeno truque do Automator que pode salvar a vida de quem precisa enviar documentos com frequência. e-mail. (Ele modela o muito útil comando Send To encontrado no menu de atalho em máquinas Windows.)

Crie um processo no Automator com apenas duas etapas: Obter itens selecionados do Finder (na categoria Finder) e Nova mensagem de email (na categoria Mail).

Se você sempre envia arquivos para o mesmo destino - seu chefe, por exemplo - você pode até pré-definir o endereço na barra de processo do Automator. Se o assunto e o texto da mensagem forem repetidos todas as vezes, eles também podem ser definidos com antecedência.

Agora selecione Arquivo (Arquivo)> Salvar como plug-in (Salvar como módulo). Nomeie o processo como Email This ou o que você quiser.

Deste ponto em diante, você pode enviar o documento a partir do Finder clicando nele com a tecla Control pressionada e selecionando Automator>Enviar por e-mail no menu que aparece.

Vitória! O Mac OS X inicia o Mail e cria uma mensagem de saída que já possui um arquivo anexado a ela.

Dica grátis: se você inserir outra ação Create Archive (da categoria Finder) entre essas duas ações, seu comando de menu também compactará o arquivo (ou pasta) em um arquivo .zip antes de enviá-lo pelo correio!

Conselho Será ainda mais legal se você colocá-lo em configurações de sistema Preferências do sistema>Acesso universal>Audição>Piscar a tela quando um som de alerta ocorrer. Agora, quando seu script estiver em execução, a tela piscará junto com o som. Se estiver gravando música, silencie seu Mac: você terá um metrônomo visual, mas nenhum áudio será ouvido.

Comparação entre AppleScript e Automator

O AppleScript pode ser usado de centenas de maneiras - automatizando processos muito complexos para o Automator, gerenciando programas que o Automator não pode ver e programando coisas como comandos de loop que o Automator não pode fazer.

Se você tratar o AppleScript apenas como um substituto para o Automator, estará perdendo muito poder. Na verdade, o AppleScript oferece recursos que o Automator provavelmente não terá em 10 anos: é uma ferramenta muito mais avançada.

Automator é bom para tarefas simples. Se você precisa do AppleScript para automatizar seu Mac, não se desespere. Você está assumindo uma ferramenta realmente poderosa. (Você pode até combiná-los e incorporar AppleScripts nos processos do Automator com a ação Executar AppleScript.)

Sucessos em automação!

Abra, corte, converta para outro modelo de cor, salve. Abra, corte, converta para outro modelo de cor, salve. Aberto Ou ainda aqui: Selecionamos, transferimos para o buffer, mudamos para outro aplicativo, copiamos do buffer. Selecionar, armazenar em buffer, alternar

Não soa como uma atividade criativa, não é? Mas quase todo mundo que lida com um computador precisa executar dezenas e centenas de operações repetitivas e essencialmente idênticas por dia. E depois de trabalhar por três semanas como uma espécie de "conversor intelectual", não é algo para aprender nova versão"Photoshop" ou dominando o InDesign - você nem quer chegar perto de um computador. Em uma palavra - você precisa de um assistente. Que assumirá a execução de todas (bem, ou pelo menos a maioria) chatas e rotineiras, mas, claro, das necessárias ações repetitivas.

AppleScript - que tipo de besta?

E nós temos esse assistente. É uma linguagem especial para escrever scripts (ou, se preferir, scripts) chamada AppleScript. Pela primeira vez, essa linguagem apareceu no Mac OS 7.5 (então ainda Macintosh System), e foi tão bem implementada, e também tinha recursos tão amplos que, com o lançamento da décima versão do sistema operacional, "estendeu a mão" apenas para versão 1.8. Mas, curiosamente, apesar de seu enorme potencial, ou por mais de uma década de existência, a tecnologia AppleScript não se espalhou entre os usuários de Mac. O que é o culpado - os mitos sobre sua complexidade, a inércia dos usuários acostumados exclusivamente ao controle "icon-mouse" de seus Macs, ou qualquer outra coisa - não posso julgar, mas o fato é que centenas sabem sobre o existência do AppleScript, mas apenas use-o em unidades. Portanto, não é supérfluo, na minha opinião, considerar os princípios básicos dessa tecnologia.
No núcleo do AppleScript está o Macintosh Apple Events, um serviço de processamento de eventos do sistema que permite que comandos de controle, dados e solicitações sejam trocados entre aplicativos, sistema operacional, serviços de rede e até computadores diferentes. O mecanismo de script (que é uma extensão simples localizada na pasta System) converte comandos de script em uma sequência de eventos e os passa para o aplicativo especificado no script e, após processá-los, recebe o resultado e envia para a fonte do script.
Embora o AppleScript seja uma linguagem de programação real (suporta variáveis, loops, declarações condicionais, sub-rotinas, permite realizar cálculos complexos e ainda possui ferramentas para construir e processar caixas de diálogo), a execução das tarefas principais ainda recai sobre os ombros de aplicações externas. E o AppleScript atua como uma espécie de "cola" que transfere dados entre programas ("transferir um arquivo do Illustrator para o Photoshop"), avalia o estado atual do ambiente de trabalho programas individuais, SO e redes ("O arquivo já foi rasterizado ou ainda não?") e permite que você execute ações com base nos resultados de operações anteriores ("se todos os arquivos forem rasterizados, envie os materiais para uma pasta especial, e executar o script responsável pela montagem das tiras de jornal").
Existem vários níveis de "cenário" das aplicações. Assim, por exemplo, os programas menos adaptados à automação entendem apenas os comandos básicos e mais simples: carregar o aplicativo, abrir o documento, enviar para impressão e fechar o aplicativo (executar, abrir, imprimir e sair). Os mais "complacentes" (como Photoshop, Illustrator e FreeHand) têm em seu arsenal ferramentas suficientes para escrever programas. processamento em lote arquivos e executar certas sequências de ações (comandos de macro). Bem, aqueles que suportam quase todos os recursos da tecnologia AppleScript (e isso inclui QuarkXPress, Adobe InDesign e a maioria dos programas da Apple) permitem controlar seu trabalho nos níveis mais "profundos": definir opções de impressão, usar a área de transferência, verificar e alterar os valores de variáveis ​​internas, etc.

Fundamentos da scriptologia

Para inserir textos de origem e executar scripts, você pode usar o programa Script Editor - a principal e única ferramenta para criar scripts na distribuição padrão do Mac OS.
O editor de scripts está localizado na pasta Apple Extras/AppleScript (para uma versão localizada do Mac OS - Add-ons/AppleScript) e, após o lançamento, exibe uma janela semelhante à mostrada na fig. 1.


Arroz. 1. Editor de roteiro

Os campos de entrada superior e inferior destinam-se a descrever o script e seu texto, respectivamente, e dificilmente precisam de comentários adicionais. O botão Gravar permite gravar um comando de macro; para isso, após pressionar o botão, acesse aplicativo desejado, e executar uma série de ações; após o qual o texto do script aparecerá no campo de entrada inferior (deve-se observar que a capacidade de gravar comandos de macro não é suportada por todos os programas). O botão Check Syntax verifica se há algum erro no texto do script e também o coloca em um formato "comercializável" - destaca em negrito e travessões palavras-chave e blocos aninhados.
Cenário um. Para começar, como de costume, escrevemos o programa mais simples, que executa várias ações elementares: fecha todas as janelas abertas, remove todos os discos removíveis da mídia, organiza os ícones na tela, esvazia a lixeira e desliga o computador. O texto de tal programa se parece com isto:

diga ao aplicativo "Finder"

feche todas as janelas
ejetar todos os discos
limpar área de trabalho
lixo vazio
desligar

acabar diga

O que tudo isso significa? O serviço Apple Events (a "espinha dorsal" da tecnologia AppleScript) passa dados, solicitações e mensagens não apenas entre programas, mas também entre elementos de programa chamados objetos, que podem ter uma estrutura aninhada chamada modelo de objeto. Assim, por exemplo, para o programa Finder, o modelo de objeto (mais precisamente, apenas uma das ramificações desse modelo) pode ser representado da seguinte forma: Finder - Desktop - Pasta - Arquivo; Para editor de texto este modelo terá a forma Documento - Página - Parágrafo - Frase; para uma ilustração vetorial, ela se parecerá com Ilustração - Forma de base - Curva de Bezier - Ponto (Fig. 2).


Arroz. 2. Exemplos de modelos de objetos

Cada objeto normalmente tem uma ou mais propriedades (Figura 3) que podem ser definidas ("definir a altura da página para 14 polegadas"), modificadas ("alterar a largura de 8" para 8,5") e controladas ("o que é igual à margem direita da página?").


Arroz. 3. Propriedades do objeto

Para controlar este ou aquele objeto, ele deve ser selecionado (indicado) no modelo de objeto. Para isso, a construção diga fim diga, e todos os comandos que controlam o objeto estão contidos nessa construção; se o objeto estiver "profundo" em uma das ramificações do modelo, vários blocos aninhados serão usados diga fim diga. No exemplo a seguir, o script acessa a área de trabalho (um dos elementos do modelo de objeto Finder) em etapas e, em seguida, move a pasta "test" na área de trabalho para a lixeira.

diga ao aplicativo "Finder"
informe a área de trabalho

Excluir pasta "teste"

acabar diga
acabar diga

Ao escrever um script que controla qualquer programa - não importa se é Finder, FileMaker, Adobe Acrobat ou outra coisa - você precisa saber quais comandos da linguagem AppleScript este programa suporta, quais objetos estão incluídos em seu modelo de objeto, bem como os nomes e propósitos de todas as propriedades dos objetos disponíveis. Todas essas informações são armazenadas diretamente no arquivo executável de um programa, no chamado dicionário de aplicativos. Para utilizar este dicionário, no programa Editor de Scripts, é necessário executar o comando Arquivo/Abrir Dicionário (File/Open Dictionary), e na janela que se abre, selecionar o arquivo executável do aplicativo de seu interesse. Como resultado, uma janela semelhante à mostrada na Fig. 4 - na parte direita há uma lista de todos os comandos e objetos, na parte esquerda são fornecidas suas breves descrições.


Arroz. 4. Dicionário de aplicativos

Segundo cenário. Vamos passar para a resolução de problemas práticos. Web designers muitas vezes precisam verificar a compatibilidade de suas páginas com versões mais antigas de navegadores. Para fazer isso, você precisa abrir janelas com pastas, procurar arquivos executáveis ​​\u200b\u200bdos programas visualizadores, baixá-los e também procurar pastas com páginas da Web em discos. Em geral, - não é a ocupação mais agradável. Vamos criar um script que facilitará a navegação nas páginas: ele carregará automaticamente vários navegadores diferentes e abrirá o documento que precisamos em cada um.

diga ao aplicativo "Finder"

Selecione (especifique) o arquivo desejado
selecione o arquivo "index.html" da pasta "Site atual" da área de trabalho
-- atribui o caminho para o arquivo selecionado à variável myFile
definir myFile para a seleção como string

Baixe o Microsoft IE e abra a página selecionada
diga ao aplicativo "Internet Explorer 3.01"
open(alias myFile)
acabar diga

Realizamos a mesma operação com o Netscape Navigator
diga ao aplicativo "Netscape Navigator 3.01"
abrir (alias myFile)
acabar diga

Vários novos designs apareceram no programa acima. Todas as linhas que começam com caracteres "--" são comentários. Na linguagem AppleScript, os comentários podem ser escritos tanto em uma linha separada quanto no final da linha, imediatamente após o comando. Em qualquer caso, todos os caracteres que seguem "--" e antes do início nova linha são considerados comentários e são ignorados quando o script é executado.

O comando "selecionar" simula a seleção explícita de um elemento pelo cursor do mouse e sua ação é um pouco semelhante ao uso da construção diga fim diga, mas com a diferença que ao usar o comando selecionar podemos atribuir algumas propriedades do objeto selecionado (por exemplo, o caminho de um arquivo ou pasta) a uma variável.

Operador definiré usado para indicar os valores das variáveis ​​que são criadas no momento da primeira chamada para elas. Ou seja, não há necessidade de descrever preliminarmente o nome e o tipo da variável: escrevemos, por exemplo, definir myDate para a data atual, e o AppleScript criou a variável e escolheu o tamanho certo para ela e o tipo. Mas isso não é tudo: com a ajuda do operador definir Você pode alterar todas as propriedades dos objetos. Isto se faz do seguinte modo:

diga ao aplicativo "Finder"
informe a área de trabalho
informe o arquivo "Lista de preços"

-- alterar o arquivo de comentário da propriedade (comentário) "Lista de preços"
-- o arquivo está na área de trabalho
defina o comentário como "Esta lista de preços está desatualizada!"

acabar diga
acabar diga
acabar diga

Ou a mesma coisa, apenas com o comando select:

diga ao aplicativo "Finder"

Selecione o arquivo "Lista de preços" do desktop
defina o comentário da seleção como "Esta lista de preços está desatualizada!"

acabar diga

Como você pode ver, até agora todo o trabalho com scripts - digitação e execução - foi realizado exclusivamente com a ajuda de um editor especial. Este método é bom quando você precisa criar um novo script ou refazer um antigo. Mas para o uso diário não é bom - enquanto você abre o Editor de Script, enquanto encontra o script necessário nos discos, você pensa involuntariamente - não seria mais rápido fazer o mesmo trabalho manualmente, sem nenhuma automação? Os desenvolvedores do AppleScript cuidaram disso - os scripts podem ser armazenados não apenas como arquivos de texto, mas também em formato compilado, totalmente adequado para execução offline. Para traduzir o script em código executável, você precisa executar o comando Save As Run-Only no editor de script (Salvar como um programa). Na caixa de diálogo que aparece (semelhante ao que pode ser visto na Fig. 5), selecione Application na lista suspensa; redefinir a caixa de seleção Ficar aberto (Deixar aberto - se você não ativar esta opção, após a execução, o script terminará automaticamente seu trabalho, caso contrário, permanecerá na memória do computador) e marque a caixa de seleção Mais recente Mostrar tela de inicialização (Não mostrar a tela de carregamento). Depois de concluir todas as ações descritas, iniciar o script não causará nenhuma dificuldade: basta passar o cursor do mouse sobre ele e clicar duas vezes no botão.


Arroz. 5. Salvando o script como um programa executável

Cenário três e último. Definitivamente benéfico Reservar cópia ouvido por muitos. E quem pelo menos uma vez na vida perdeu os resultados do seu trabalho mensal (no pior dos casos, pelo menos semanal), certamente sabe que é melhor gastar 15 minutos todos os dias arquivando os arquivos necessários do que arrancar os cabelos em sua cabeça e polvilhe cinzas em seu monitor. Mas, via de regra, mesmo após a perda informação importante as pessoas não mudam seus hábitos: você costumava dizer para si mesmo - "É isso, a partir de hoje estou fazendo cópias de todos os arquivos!". E uma ou duas semanas se passarão - e programas como "não falham" e não há tempo livre - "E por que preciso desse backup! E assim será." Para facilitar um pouco a vida de todos aqueles que desejam ver seus arquivos sãos e salvos, mas não gostam muito de trabalhar com o programa StuffIt, escreveremos um script que arquivará todos os dados necessários diariamente e os colocará em um disco especial . Aqui está o código fonte para tal programa:

diga ao aplicativo "Finder"

Especifique a unidade e a pasta onde todos os arquivos são armazenados
-- para arquivamento
defina myArhiveFolder como "Mac OS: Trabalho atual:"
-- especifique a pasta onde os arquivos são armazenados
defina myTargetFolder como "Para arquivos:Publicar arquivo:"
-- atribui um nome ao arquivo futuro
-- (serve como um nome A data atual)
defina myFile para a string de data de (data atual) & ".sit"
-- criar nome de arquivo completo (caminho + nome)
definir myArhiveFile para myTargetFolder & myFile

Se já existir um arquivo com o mesmo nome
-- (ou seja, o backup foi feito hoje)
-- então apenas finalize o script
se não (existe (arquivo myArhiveFile)) então

Se um arquivo com o nome fornecido ainda não existir,
-- então baixe o StaffIt Deluxe e faça o arquivamento,
-- e imediatamente descarregar o StuffIt da memória
diga ao aplicativo "StuffIt Deluxe"

Ativar
faça novo arquivo com propriedades (pathname:myArhiveFile)
stuff (alias myArhiveFolder) no arquivo 1
fechar arquivo 1
desistir

O script fornecido simplifica o procedimento de backup, mas ainda não tanto quanto gostaríamos - para iniciar o arquivamento, você terá que procurar esse script (em discos ou na área de trabalho) e executá-lo. Para automatizar totalmente o trabalho, você precisa compilar o script e salvá-lo na pasta System / Shutdown Items (Pasta System / Shutdown Items). Agora, toda vez que você desligar o computador, o arquivador carregará e salvará automaticamente todos os arquivos importantes em um disco especial. Deve-se observar que o arquivamento será realizado apenas uma vez por dia, independentemente de o computador ter trabalhado por 20 horas seguidas ou reiniciado a cada meia hora - usando o operador de condição se acabar se verificamos se vale a pena arquivar ou é melhor esperar. Até o dia seguinte.

Então o que vem a seguir?..

Depois de ler sobre o poder do AppleScript e ver que a criação de scripts é muito fácil e acessível até mesmo para iniciantes, convém continuar explorando essa ferramenta de automação. E é aqui que a primeira decepção o espera. Infelizmente, praticamente não há informações sobre o AppleScript em russo: para contar todas as publicações, os dedos de uma mão são mais que suficientes. Portanto, para aprender a linguagem de script, você também precisará de um bom conhecimento da língua inglesa.

Existem duas fontes principais de informações sobre a tecnologia AppleScript. O primeiro é o site oficial da Apple Computer, mais precisamente a seção do site dedicada a tudo relacionado a scripts: documentação técnica, tutoriais, exemplos, coleções de links e muito mais. O endereço desta seção é http://www.apple.com/applescript/ . Eu recomendo que você primeiro baixe o AppleScript Language Guide, um tutorial bem ilustrado que inclui muitos exemplos práticos (o livro está disponível em http://developer.apple.com/techpubs/macosx/Carbon/pdf/AppleScriptLanguageGuide.pdf , tamanho do arquivo 2 .6 MB). A segunda fonte, http://www.scripter.com, contém um rico material sobre AppleScript e outras linguagens de script alternativas para a plataforma Macintosh.

Além disso, se você decidir começar a escrever scripts, precisará de um bom ambiente de ferramenta - o Editor de scripts que acompanha o Mac OS é adequado apenas para scripts simples de 20 a 30 linhas de código. Nesse caso, podemos recomendar o Scripter 2.5 do Main Event Software - o editor possui um modo de depuração e um mecanismo bem pensado para exibir dicionários de aplicativos. E se você estiver criando programas AppleScript que terão sua própria interface de usuário, você também pode obter o FaceSpan 3.5 da Digital Technology - este aplicativo reduzirá o tempo necessário para criar menus e caixas de diálogo na tela e evite mexer longa e frustrante com esboços de ondas milimétricas.

Em vez de uma conclusão

Escrever roteiros é divertido. Escrever scripts é útil. Escrever roteiros é até legal. Embora, claro, seja muito mais agradável entregar-se ao ócio desejado, numa altura em que o roteiro "recém-assado" elabora pacientemente toda a rotina semanal.

Aproveite o tempo, passe alguns dias aprendendo o idioma, escreva alguns scripts que facilitem seu trabalho e você verá por si mesmo que o AppleScript é uma ferramenta muito simples, muito poderosa e muito flexível. Embora, devemos esperar algo diferente da Apple? ..