在消息的开头插入文本

时间:2015-01-28 21:29:38

标签: applescript outlook-2011

我正在尝试编写一个AppleScript,它会在消息的开头插入一些预定义的文本。这就是我目前所拥有的:

set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:")
if result is false then
    stop
else
    set msgClasstxt to the result
    set msgClasstxt to "Classification: " & msgClasstxt

    tell application "System Events"
        key code 126 using {command down}
        keystroke return
        keystroke return
        key code 126 using {command down}
    end tell
tell application "Microsoft Outlook" to set selection to msgClasstxt
end if

我确信有更好的方法可以做到这一点,但意图如下:

  • 带CMD + Up回家
  • 创建两个空行
  • 再次回家
  • 插入文字

我的问题是在执行击键之前插入了文本。让人伤脑筋。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

击键和其他gui任务输入到最前面的应用程序。因此,您应该在执行这些操作之前始终激活您想要定位的应用程序。因此,我建议您在系统事件代码之前放置以下内容。即使你认为应用程序是最重要的,你也应该这样做才能确定。

tell application "Microsoft Outlook" to activate
delay 0.2

此外,正如其他评论中所建议的那样,您需要在每行gui代码之间短暂延迟,以确保计算机有时间物理执行代码。

因此请使用延迟并激活应用程序。这应该对你有帮助。

答案 1 :(得分:0)

所以,这就是我所做的: - 增加了一项规定,以确保我处理当前活动的消息窗口 - 激活那个窗口 - 通过系统事件完成所有操作

tell application "Microsoft Outlook" to get the id of the first window
set currentWindow to the result

set msgClass to (choose from list {"Green", "Blue", "Purple"} with title "Choose:")

if the result is false then
    stop
else
    set msgClasstxt to "Classification: " & the result
    tell application "Microsoft Outlook"
        activate window currentWindow
        tell application "System Events"
            key code 126 using {command down}
            keystroke return
            keystroke return
            key code 126 using {command down}
            keystroke msgClasstxt
        end tell
    end tell
end if

第一行有效,因为Outlook首先列出了最前面的窗口。这就是我现在想要的。