使用键盘快捷键执行服务时,Apple 脚本全局变量不起作用

Apple script Global variable not working when executing the service using a keyboard shortcut

我在 Automator 中创建了一项服务,每次都使用不同的颜色模式打开终端。

global terminalpos

on run {input, parameters}
    try
        get terminalpos
    on error
        set terminalpos to 0
    end try
    set colorsList to {"Pro", "Basic", "Grass", "Homebrew", "Man Page", "Novel", "Ocean", "Red Sands", "Silver Aerogel", "Solid Colors"}
    set listSize to count of colorsList
    if terminalpos is greater than or equal to listSize then
        set terminalpos to 0
    end if
    tell application "Terminal"
        set terminalpos to terminalpos + 1

        set default settings to settings set terminalpos

        do script ""
        activate
    end tell

end run

在自动机内部它工作正常。 但是当我使用键盘快捷键执行服务时它不起作用。似乎每次都设置了全局变量。 有什么想法吗?

谢谢

全局变量不是 "persistent" 跨应用程序启动。 link 是一种使数据从自动化应用程序持久化的简单方法。参见 here。请注意,在 applescript 应用程序中,您可以只使用 "property" 变量,但它们不适用于 automator 应用程序。

您无需执行任何操作即可看到 link 中的代码有效。为 "first run" 设置一个值,然后自动创建保存的数据文件。我喜欢将保存的数据文件的路径设置到您的首选项文件夹的想法,这样它就不会妨碍您的自动化应用程序将像您计算机上的所有其他应用程序一样工作。