Automator + Applescript如何:新桌面(打开日历和提醒)

时间:2015-03-20 11:50:09

标签: macos applescript desktop automator

标题是我想要实现的目标。

在Automator中,我试图简单地记录打开新桌面的行为,然后打开其中的应用程序 - 但我得到了

  

“Watch Me Do”操作遇到错误。检查操作的属性,然后再次尝试运行工作流程

此外,如果我这样做,录制的动作是“单击桌面4按钮”。

同样,我用Google搜索并找到了创建特定桌面的Applescripts(例如桌面3),但我总是打开不同数量的桌面。所以我希望Workflow只需创建一个 new 桌面,无论我已经打开多少。此外,我发现的许多Applescripts都是针对仍然拥有太空的小牛队而且我有优胜美地。

我可以弄清楚如何让脚本打开日历和提醒,因此主要问题是如何打开它或创建一个新的桌面。

3 个答案:

答案 0 :(得分:9)

花了一段时间,但我想出了这个。适用于小牛队。

on run {input, parameters}
    my openNewSpace()
    my launchApplication("Reminders")
    my launchApplication("Calendar")
end run

on openNewSpace()
    tell application "System Events"
        --mission control starten
        do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
        tell process "Dock"
            set countSpaces to count buttons of list 1 of group 1
            --new space
            click button 1 of group 1
            --switch to new space
            repeat until (count buttons of list 1 of group 1) = (countSpaces + 1)
            end repeat
            click button (countSpaces + 1) of list 1 of group 1
        end tell
    end tell
end openNewSpace

on launchApplication(app_name)
    tell application app_name
        launch
    end tell
end launchApplication

答案 1 :(得分:0)

在macOS Mojave(10.14.3)上运行正常

AppleScript:

tell application "System Events"
    tell application "Mission Control" to launch
    tell group 2 of group 1 of group 1 of process "Dock"
        click (every button whose value of attribute "AXDescription" is "add desktop")
        tell list 1
            set countSpaces to count of buttons
            delay 0.5
            click button (countSpaces)
        end tell
    end tell

    delay 0.5
    tell application "Calendar" to launch
    tell application "Reminders" to launch
end tell

JXA:

Application("Mission Control").launch()

var proc = Application("System Events").processes['Dock']
var group = proc.groups[0].groups[0].groups[1]

var bs = group.buttons.whose({ description: "add desktop"})
Application("System Events").click(bs[0])

delay(0.5)
var li = group.lists[0]
Application("System Events").click(li.buttons[li.buttons.length - 1])

delay(0.5)
Application("Calendar").activate()
Application("Reminders").activate()

答案 2 :(得分:0)

这适用于我的macOS Mojave 10.14.4

如果您使用其他语言,则需要将“添加桌面”替换为系统语言。

AppleScript:

tell application "System Events"
tell application "Mission Control" to launch
tell group 2 of group 1 of group 1 of process "Dock"
    click (every button whose value of attribute "AXDescription" is "添加桌面")
    tell list 1
        set countSpaces to count of buttons
        delay 0.5
        click button (countSpaces)
    end tell
end tell