Como fazer com que um arquivo AppleScript existente funcione como um serviço?

11

Fiz um AppleScript, salvei-o como um arquivo em uma pasta específica no meu disco rígido. Agora, quero atribuir um atalho a ele e parece que tenho que fazer um Serviço via Automator, mas ele Run AppleScriptpede para eu inserir o código, enquanto quero executar o arquivo .scpt já existente. Como fazer isso?

Nakilon
fonte

Respostas:

9

Sim, o Automator é a melhor opção aqui. Para criar o serviço, siga estas etapas:

  1. Abra o Automator e selecione Serviço:

    insira a descrição da imagem aqui

  2. Pesquise 'applescript' e arraste a ação para o painel direito:

    insira a descrição da imagem aqui

  3. Mude Service receives selected textpara Service receives no inputpara que ele sempre apareça no menu Serviços:

    insira a descrição da imagem aqui

  4. Substitua (* Your script goes here *)por:

    do shell script "/usr/bin/osascript /path/to/your/script.scpt"

    se você deseja executar seu .scptarquivo existente . Observe que o osascript não pode lidar com a interação do usuário, como exibir uma janela de diálogo:

    insira a descrição da imagem aqui

    Para superar essa limitação, use esta solução alternativa ou simplesmente substitua (* Your script goes here *)pelo conteúdo do seu script.

  5. Salve isso:

    insira a descrição da imagem aqui

  6. Se desejar, você pode atribuir um atalho ao seu novo serviço. Selecione Serviços> Preferências de Serviços no Finder (ou qualquer aplicativo aberto):

    insira a descrição da imagem aqui

  7. Atribua um atalho não tão comum:

    insira a descrição da imagem aqui

  8. Agora seu serviço está acessível a partir de qualquer aplicativo através do atalho que você atribuiu na etapa anterior:

    insira a descrição da imagem aqui

Se você quiser se livrar do serviço aberto ~/Library/Services, exclua o serviço e esvazie a lixeira:

insira a descrição da imagem aqui

jaume
fonte
Eu disse que queria executar o arquivo de script existente, não escrevê-lo novamente no Automator.
Nakilon 02/09/2013
Eu pensei que copiar / colar seria bom, mas sim, você está certo, está claramente indicado na sua pergunta. Use osascript, conforme explicado em outras respostas.
jaume
@Nakilon Adicionei como usar osascriptno Automator para executar seu .scptarquivo, uma limitação e duas soluções alternativas.
jaume
Eu acabei de fazer isso. Funcionou; mas agora leva de 4 a 5 segundos para iniciar o script. (Quando o código foi salvo diretamente no fluxo de trabalho, ele foi lançado quase imediatamente.) Alguma idéia do que causa isso ou de como é mais rápido?
Zack
1
@ Zack Obrigado, não sei por que osascriptprecisa de 4 segundos adicionais para executar seu script, mas o Automator não é a causa do atraso, que era minha preocupação. Você pode querer depurar osascript, consulte opensourcehacker.com/2011/12/02/… e stackoverflow.com/questions/31045575/…
jaume
4

No script, adicione um on runargumento:

on run
    -- do whatever the script does
end run

Em seguida, você pode usar a ação "Executar script de shell" do Automator, com o osascriptcomando:

osascript /path/to/script.scpt

osascripté um comando que executa o AppleScript no shell. Você precisa das linhas no script para permitir que o script seja executado fora do editor AppleScript.

alexwlchan
fonte
1
Você não precisa incluir um manipulador de execução explícito. Todos os scripts têm um manipulador de execução implícito. O motivo pelo qual a ação Executar AppleScript do Automator inclui um manipulador de execução explícito pode ser porque o Automator usa o on run {input, arguments}formulário especial , mas mesmo no Automator você pode apenas remover o manipulador de execução.
Lri
1
@ ͏͏͏ Gostaria de saber se este ping chega até você. Parabéns pela seleção do nome do criativo.
bmike
3

Talvez você queira dar uma olhada neste serviço , que permite "criar serviços do Mac OS X a partir de qualquer script".

Pedro
fonte
1
Você pode fornecer uma resposta aqui, em vez de apenas um link
user151019
2

Eu não recomendaria a criação de serviços do Automator para atribuir atalhos aos scripts. Há um erro nas versões 10.7 e 10.8, em que os atalhos de teclado dos serviços do Automator nem sempre funcionam até você passar o mouse sobre o menu de serviços na barra de menus. Também há um atraso relativamente longo (talvez de 0,1 a 1 s) antes da execução dos serviços.

Veja esta resposta para outras maneiras de atribuir atalhos de teclado a scripts. Eu uso FastScripts e Alfred.

Lri
fonte
Eu nunca experimentei essa necessidade de pairar? você tem mais detalhes do que você está falando
markhunte
1
Não tenho certeza se isso afeta todas as instalações do OS X ou todos os serviços, mas já o encontrei várias vezes em instalações diferentes, e isso foi mencionado por outras pessoas aqui e no Superusuário. Ocasionalmente, os atalhos do teclado para todos os serviços do Automator param de funcionar (ou nada acontece se você pressioná-los), mas eles começam a funcionar novamente se você passar o mouse sobre o menu de serviços na barra de menus ou se, por exemplo, selecionar um serviço com o mouse.
Lri 3/09/13
2

Você pode EXECUTAR o script existente com um simples serviço de automação como este. E atribua seu atalho de dentro dos atalhos do teclado normalmente. Lembre-se de que alguns aplicativos podem precisar ser reiniciados antes de escolherem os atalhos.

exemplo.

Olá, script:

say "hello"

Serviço de automação: insira a descrição da imagem aqui

Que neste exemplo usa:

  • Sem entrada
  • Qualquer aplicação.

A ação é um script de shell de execução O código usa apenas o comando unix osascript e o caminho para o arquivo. A entrada de passagem pode ser para stdn ou argumento

É isso que nada de especial precisa ser feito no script.

Para obter mais detalhes sobre o comando osascript, consulte as páginas de manual . A página de manual fornece outro exemplo em que você pode passar argumentos para o script.

markhunte
fonte
0

Para desenvolver um Serviço, você precisa de algum tipo de software que crie um Serviço, como um dos seguintes:

  1. Automator para criar um fluxo de trabalho.
  2. ThisService para criar um serviço.
  3. Xcode para criar um .app

Todos os tipos de serviços acima são pacotes. São todas as pastas que contêm uma lista que especifica os atributos de um Serviço.

Aqui está como eu criei um Serviço usando o Automator que usa uma ação do Automator "Run AppleScript" para chamar um .script existente.

Serviço de automação que chama um AppleScript existente

Kaydell
fonte