每次运行脚本而不是if语句为true时,AppleScript都会运行Atom文本编辑器

时间:2018-07-18 13:12:07

标签: applescript automator

我是AppleScript的新手,我正在尝试制作一个简单的AppleScript,它将弹出一个对话框,询问用户输入,并根据输入将打开一个或另一个应用程序。为此,我使用了:

tell application "atom" 
activate
end tell

其中一个应用程序存储在名为Tardis的外部硬盘驱动器上。我下面的代码的问题在于,每次我同时运行脚本和对话框窗口时,它都会自动打开Atom。我只希望在给定输入a的情况下打开Atom。谢谢您的帮助!代码如下:

on run {input, parameters}
    set inputText to text returned of (display dialog "Options: p - a - j" default answer "")
    set p to "p"
    set a to "a"
    set j to "j"
    if (inputText = p) then
        tell application "Terminal"
            if it is running then
                do script "cd Python_Workspace; source ~/tensorflow/bin/activate"
            end if
            activate
        end tell
        tell application "Finder" to open POSIX file "/Volumes/Tardis/EXTRA Applications/Sublime Text.app"
    end if
    if (inputText = a) then
        tell application "Atom"
            activate
        end tell
        tell application "Terminal"
            if it is running then
               do script ""
            end if
            activate
        end tell
    end if
    if (inputText = j) then
        tell application "Terminal"
            if it is running then
                do script "cd /Java_Workspace"
            end if
            activate
        end tell
        tell application "IntelliJ IDEA CE"
            activate
        end tell
    end if
    return input
end run

1 个答案:

答案 0 :(得分:0)

因此,某些支持Applescript的应用程序确实或确实需要启动应用程序才能编译Applescript(如果我没记错的话,这些应用程序对Applescript的支持不佳,我敢打赌是Atom)。

这可能不是正在发生的事情,特别是因为如果您正在启动已编译的Applescript,但是可能正在运行.applescript(文本)文件。

我会怎么做,而不是something(您所拥有的单行版本),而是:tell application "Atom" to activate

如果这对您有用,那么activate application "Atom"activate就是这样:

  1. Applescript注意到您正在谈论Atom。它需要字典才能将您键入的内容转换为...事件。
  2. Applecript找不到词典,因此它启动了该应用程序,希望它在启动时可以从中获取更多信息
  3. Atom启动后,Applescript意识到每个应用程序都支持tell

activate上您没有尝试执行Atom特定的任何操作...只需激活一个应用即可。无需字典查找。

(还应注意,我已经做了很长时间了。实际上,我可能引用的信息已经过时了十年或更长时间,或者是10.4中的“新”信息-不是10.14,而是10.4)< / p>