make applescript在后台运行

时间:2014-11-16 14:55:21

标签: macos outlook applescript

我尝试过使用Outlook 2011: Adding some messages to "Waiting for reply" folder中的脚本。基本上,当我撰写Outlook邮件并按Ctrl-Shift-W(在脚本名称中指定)时,它会尝试发送邮件,在已发送文件夹中找到它并将其移动到“等待”文件夹。为了确保Outlook有机会发送邮件,它会在重复发送邮件之前尝试延迟。

不幸的是,延迟不起作用(它没有延迟),使其失败。检查do shell script "sleep 1s"表示Outlook被卡住,并且在脚本失败之前不会发送消息。

我认为在执行任何后台任务之前,outlook正在等待脚本结束。所以脚本需要在后台运行。也许启动一个辅助脚本或类似的东西。

问题是我不知道该怎么做。因此这个问题......

2 个答案:

答案 0 :(得分:0)

虽然AppleScript确实有自己的睡眠方法(延迟),但您可能正在寻找的是空闲处理程序。如果将脚本保存为应用程序并选中“在运行处理程序后保持打开”,Mac OS X将在“运行”处理程序完成后立即调用脚本的空闲处理程序。然后,您的空闲处理程序返回应该调用 next 时间的秒数;这可以无限期地发生。在您的情况下,它可能看起来像这样:

global messageID

on run
    -- send message
    -- set messageID to whatever you are using as the just-sent message’s identifier
end run

on idle
    --check whether message exists in the sent folder
    --note that this is just pseudocode, you’ll need to change it for your purposes
    if exists messageID in sent folder then
        --do something with it
        quit
    else
        --wait another second
        return 1
    end if
end idle

这将每秒重复一次空闲,直到满足 if 中的条件,此时它将执行任务并退出脚本。

答案 1 :(得分:0)

您可以尝试这样的事情:

ignoring application responses
    tell application "Microsoft Outlook"
        --send code goes here
        sync
    end tell
end ignoring

delay 5

tell application "Microsoft Outlook"
    -- Find code goes here...
end tell