如何重复或循环 applescript

how to repeat or loop an applescript

我正在寻找一个选项来为 apple 邮件中的所有未读邮件着色,我找到了以下脚本

tell application "Mail"

set background color of (messages of inbox whose read status is false) to red --unread
set background color of (messages of inbox whose read status is true) to none --default read

end tell

我将此脚本添加到邮件规则中,该规则适用于每封邮件,然后它几乎可以完美运行。唯一的问题是它只能工作一次。所以如果我收到一条新消息,脚本没有注意到它(所以它不是红色,只是粗体),或者如果我阅读了一封电子邮件,那么它仍然是红色的。 请有人帮助我,脚本将 运行 循环,或者脚本将 运行 每秒。

仅供参考,我是 windows 用户(mac 对我来说真的很新),我一直在寻找计划任务选项,但我没有找到这么简单的东西在我的 mac.

您有多个选项可以 运行 计划任务。 Apple 建议使用 "launchd" 代理。许多示例只需 google "launchd tutorial"。

基础知识是这样的...您创建一个 plist 文件(一个 xml 带有 .plist 文件扩展名的文本文件)以及您想要的任何指令并将其放入文件夹中 ~/Library/LaunchAgents.这些教程将向您展示如何创建多种不同类型的 plist 文件。将 plist 添加到该文件夹​​后,然后 logout/login 使其生效。要禁用来自 运行ning 的 plist fie,然后将其从文件夹和 logout/login 中删除。就是这么简单。

作为满足您特定要求的示例 plist,此示例将 运行 您的 applescript 每 60 秒...

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.myName.myProgramName</string>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/path/to/applescript.scpt</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>

因此,在那个 plist 示例中,您只需将您的值放入 "com.myName.myProgramName"、“/path/to/applescript.scpt”和“60”,即到 运行 的秒数applescript.

注意:您应该将 plist 文件命名为与 "com.myName.myProgramName" 相同的名称,并以“.plist”作为文件扩展名。

祝你好运。