在Automator中依次运行多个Applescript

时间:2018-09-04 16:05:41

标签: macos applescript automator

我正在尝试使这一过程自动化。

步骤1:将系统日期更改为特定日期。

第2步:打开一个应用程序。

第3步:将系统日期更改回正常状态。

现在在Automator上,我放置了三个这样的苹果脚本。

enter image description here

on run {input, parameters}

tell application "Terminal"
    do script with command "sudo date 082704002018"
    activate
end tell

delay 1
tell application "System Events"

    keystroke "mypassword" & return
    delay 3

end tell

end run

on run {input, parameters}

tell application "Terminal"
    do script with command "open -a applicationName"
    activate
end tell

end run

on run {input, parameters}

tell application "Terminal"
    do script with command "sudo ntpdate -u time.apple.com"
    activate
end tell

delay 1
tell application "System Events"

    keystroke "mypassword" & return
    delay 3

end tell

end run

问题是Automator仅运行第一个代码。我不确定如何使其按顺序运行所有代码。

很抱歉,如果这是一个愚蠢的问题。我对automator和applescript完全陌生。

谢谢

1 个答案:

答案 0 :(得分:1)

我不确定您为什么选择使用三个单独的AppleScript。您可以像下面的示例一样将它们全部组合到一个AppleScript中。我不太确定为什么要使用“激活”命令。我认为它们不是必需的,因此我删除了这些代码行。无论如何,下面的代码应该适合您……

tell application "Terminal"
    do script with command "sudo date 082704002018"
end tell
delay 1
tell application "System Events"
    keystroke "mypassword" & return
    delay 3
end tell
tell application "Terminal"
    do script with command "open -a applicationName"
    delay 1
    do script with command "sudo ntpdate -u time.apple.com"
end tell
delay 1
tell application "System Events"
    keystroke "mypassword" & return
    delay 3
end tell

或者,不必始终启动Terminal应用程序来运行Shell脚本,因为您可以使用“ do shell script”命令在AppleScript中运行Shell脚本。下面的applescript代码是仅使用八行代码的代码。

do shell script "sudo date 082704002018"
tell application "System Events" to keystroke "mypassword" & return
delay 3
do shell script "open -a applicationName"
delay 1
do shell script "sudo ntpdate -u time.apple.com"
delay 1
tell application "System Events" to keystroke "mypassword" & return

如果我的代码版本引发错误,则可能有必要调整延迟命令或重新插入activate命令

如果您热衷于使用自己的代码版本和三个单独的Applescript,只需从每个AppleScript中删除on run {input, parameters}end run行代码,这应该可以解决您的问题