Eu pesquisei métodos sobre como obter a seleção como uma variável de texto em um AppleScript. Mas esses métodos dependem da cópia da seleção para a área de transferência (por exemplo, ao pressionar o comando copy na parte superior do script) para introduzir esse texto ao AppleScript (usando the clipboard
).
Isso é menos que ideal, é claro, porque o texto real da área de transferência é sobrescrito.
Existe outra maneira de obter o texto selecionado, em todo o sistema, no AppleScript, sem perturbar a área de transferência?
Obviamente, pode-se obter facilmente o texto selecionado sem tocar na área de transferência no Automator. No entanto, neste caso, não quero usar o Automator; Eu preciso de uma solução AppleScript pura.
macos
applescript
text
rubik's sphere
fonte
fonte
Respostas:
Aqui está uma postagem recente no blog que foca nessa missão:
Michael Tsai - Blog - Processando o texto selecionado via script
Uma maneira de obter o texto atualmente selecionado em um AppleScript, sem sobrescrever o conteúdo da área de transferência, é simplesmente salvar
the clipboard
conteúdo para uma nova variável antes o texto selecionado é copiado. Então, no final do script, coloque o conteúdo original da área de transferência de voltathe clipboard
.Aqui está o que isso pode parecer:
Mas esse método é imperfeito, como Michael observa:
Contudo, Shane Stanley deixou um comentário na postagem do blog com um método para manter a formatação original do conteúdo da área de transferência.
Se estiver usando o exemplo anterior, substitua a primeira linha por:
Substitua a última linha por:
E adicione o seguinte código ao final:
Eu testei essa solução fornecida por Shane, e ela realmente retém toda a formatação original do conteúdo da área de transferência se você tiver rich text na área de transferência.
Shane depois deixou um segundo comentário , desta vez com a intenção de minimizar o tempo de execução do script.
Substitua este código:
com este código:
Eu testei esse novo código e descobri que o roteiro era de fato notavelmente mais rápido, apenas por um fio de cabelo.
No geral, isso não é uma solução ruim. O conteúdo da área de transferência é preservado e o atraso é muito menos perceptível se você empregar o código fornecido no segundo comentário de Shane.
Eu testei a solução contra um serviço criado no Automator.app que recebe o texto selecionado como o
input
. O Serviço e a solução AppleScript pura levaram praticamente o mesmo tempo para serem concluídos (ou seja, cerca de um segundo).Se alguém quiser um método para obter e substituir o texto selecionado sem ter que tocar na área de transferência, Michael sugere em seu blog que alguém pode utilizar um software de terceiros chamado Barra de Lançamento . No entanto, isso é "trapaça", porque, nesse ponto, fomos além do escopo da minha pergunta original, que é estritamente relacionada ao AppleScript.
fonte