首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >服务不起作用的AppleScript快捷方式,尽管单击脚本编辑器生成的应用程序很好

服务不起作用的AppleScript快捷方式,尽管单击脚本编辑器生成的应用程序很好
EN

Stack Overflow用户
提问于 2021-09-28 21:08:50
回答 2查看 226关注 0票数 0

我创建了一个用于复制粘贴键击和延迟序列的AppleScript:

示例AppleScript代码

代码语言:javascript
运行
复制
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 NSServicesStatusdefaults find '@~$]' (我尝试使用的快捷方式是Command+Alt+Shift+)。

你能建议我在哪里检查我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-29 08:29:12

您应该减少GUI脚本,以获得更稳定的代码。解决办法如下所示:

代码语言:javascript
运行
复制
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
票数 0
EN

Stack Overflow用户

发布于 2021-09-30 16:00:39

这里有一个选择,它采用完全不同的路线,无需使用UI脚本,也不必打开任何浏览器。

为了能够使用我的解决方案,您必须安装翻译壳 shell命令。在Terminal.app中,我使用自制软件和这个命令…安装了它。brew install translate-shell

成功安装翻译壳 shell命令后,自动工作流

下面的AppleScript代码将获取当前在剪贴板上的文本,并将其翻译成您选择的语言。然后,它将将剪贴板的内容设置为翻译文本。

我冒昧地添加了几个语言代码让您开始工作。

代码语言:javascript
运行
复制
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

下面的动画演示了将英文文本(已经在我的剪贴板上)转换为法语的过程。然后将转换后的文本粘贴到文档中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69368508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档