我创建了一个用于复制粘贴键击和延迟序列的AppleScript:
示例AppleScript代码
tell application "System Events"
keystroke "k" using command down
delay 0.1
keystroke "a" using command down
delay 0.1
keystroke "c" using command down
delay 0.1
tell application "Google Chrome"
if it is running then
quit
else
activate
open location "http://translate.google.com"
delay 1
activate
delay 0.7
end if
end tell
tell application "System Events"
keystroke "v" using command down
delay 0.7
keystroke "c" using control down
end tell
end tell我已经导出它从脚本编辑器作为一个应用程序,它的工作,当我点击它。
当我试图通过系统首选项>键盘>速记>服务的快捷设置来执行它时,什么都没有发生;我只是看到齿轮在顶部的条形上短暂出现。我已经批准了脚本应用程序在系统首选项>安全和隐私>可访问性,并已经检查终端输入是否存在热键冲突:defaults find NSServicesStatus或defaults find '@~$]' (我尝试使用的快捷方式是Command+Alt+Shift+)。
你能建议我在哪里检查我做错了什么吗?
发布于 2021-09-29 08:29:12
您应该减少GUI脚本,以获得更稳定的代码。解决办法如下所示:
my copyTextToClipboard()
set sourceText to (the clipboard) as string
my performGoogleTranslate(sourceText)
my getTranslatedTextToClipboard()
on copyTextToClipboard()
tell application "System Events"
keystroke "k" using command down
delay 0.1
keystroke "a" using command down
delay 0.1
keystroke "c" using command down
delay 0.1
end tell
end copyTextToClipboard
on performGoogleTranslate(sourceText)
-- following translates from English (en) to Russian (ru)
-- you can put other languadges settings
set myURL to "https://translate.google.gr/?
hl=el#view=home&op=translate&sl=en&tl=ru&text=" & sourceText
tell application "Google Chrome"
activate
set URL of active tab of window 1 to myURL
end tell
end performGoogleTranslate
on getTranslatedTextToClipboard()
-- HERE you need some mouse tool to move the mouse pointer over
-- the "Copy" button of Google Translate and to click it
end getTranslatedTextToClipboard发布于 2021-09-30 16:00:39
这里有一个选择,它采用完全不同的路线,无需使用UI脚本,也不必打开任何浏览器。
为了能够使用我的解决方案,您必须安装翻译壳 shell命令。在Terminal.app中,我使用自制软件和这个命令…安装了它。brew install translate-shell
下面的AppleScript代码将获取当前在剪贴板上的文本,并将其翻译成您选择的语言。然后,它将将剪贴板的内容设置为翻译文本。
我冒昧地添加了几个语言代码让您开始工作。
property convertLanguage : {"Convert To Belarusian (be)", "Convert To Bulgarian (bg)", ¬
"Convert To Dutch (nl)", "Convert To English (en)", "Convert To Estonian (et)", ¬
"Convert To French (fr)", "Convert To German (de)", "Convert To Greek (el)", ¬
"Convert To Hebrew (he)", "Convert To Hungarian (hu)", "Convert To Italian (it)", ¬
"Convert To Polish (pl)", "Convert To Romanian (ro)", "Convert To Russian (ru)", ¬
"Convert To Spanish (es)", "Convert To Swedish (sv)", "Convert To Ukrainian (uk)"}
activate
set chosenLanguage to word 4 of ((choose from list convertLanguage ¬
with title "Language Translator" with prompt ¬
"Choose A Language To Convert To" OK button name ¬
"Translate" cancel button name "Cancel") as text)
convertToLanguage(chosenLanguage)
on convertToLanguage(twoLetterLanguageCode)
set textToConvert to the clipboard
delay 0.1
set the clipboard to ¬
(do shell script "export PATH=\"/usr/local/bin:$PATH\";/usr/local/bin/trans -b :" & ¬
quoted form of twoLetterLanguageCode & " " & ¬
quoted form of (textToConvert as text))
end convertToLanguage下面的动画演示了将英文文本(已经在我的剪贴板上)转换为法语的过程。然后将转换后的文本粘贴到文档中。

https://stackoverflow.com/questions/69368508
复制相似问题