使用ScriptingBridge框架与Entourage进行通信

时间:2010-06-01 06:05:45

标签: cocoa applescript entourage scripting-bridge

我的问题的动机是以下文档,其中描述了如何使用ScriptingBridge集成mail.app:

http://developer.apple.com/mac/library/samplecode/SBSendEmail/Introduction/Intro.html

我也尝试在Entourage中应用类似的技术但到目前为止无法获得任何结果。我知道使用AppleScript可以帮助我解决我的问题,mactech.com有这么多的文档。

但是我觉得这个ScriptingBridge技术很优雅,并且想知道为什么它不适用于Entourage。

最大的问题似乎是我无法根据其名称创建Scripting类,因为它发生在Mail中,因为Entourage的接口与Mail的标题不同。

有人可以告诉我我错过了什么,或提供任何关于为什么这不起作用的暗示?

我也在添加示例代码

`

MicrosoftEntourageApplication * mail = [SBApplication
applicationWithBundleIdentifier:@"com.Microsoft.Entourage"];
MicrosoftEntourageOutgoingEmailMessage * emailMessage = 
[[[mail classForScriptingClass:@"outgoing message"] alloc]
initWithProperties:
[NSDictionary dictionaryWithObjectsAndKeys:
@"my sample subject", @"subject",
@"my sample body", @"content",
nil]];

//then i create a set of recipients and try to use "to recipient" as the string scripting class id, but MicrosoftEntourageRecipient is returned as nil 

MicrosoftEntourageRecipient * theRecipient =
[[[mail classForScriptingClass:@"to recipient"] alloc]
initWithProperties:
[NSDictionary dictionaryWithObjectsAndKeys:
@"johndoe@adobe.com", @"address",
nil]];

`

我试图让简单的事情发挥作用,我甚至不专注于我现在应该做的任务。

我是一个Cocoa初学者(并且愿意学习),请原谅一个句法天真的人,除了回答我的问题之外,还要在示例代码中指出它们。

最诚挚的问候,

萨勃拉曼尼亚

1 个答案:

答案 0 :(得分:1)

一些事情:

  1. 如果您遇到困难,请首先弄清楚如何在AppleScript中执行此操作。这就是大多数应用程序脚本编写者所使用的(即最能帮助您的人)以及几乎所有文档的编写内容。实际上,如果你想做很多应用程序脚本,你真的需要学习一些AppleScript(正如你真的需要从ObjC那里学习使用Python,Ruby等的Cocoa)。

  2. 脚本桥是clunky, obfuscated and prone to application compatibility problems,因此将工作AppleScript代码转换为它可能会非常棘手(如果不是不可能的话),具体取决于您要定位的应用程序,您正在使用的命令等等。从记忆中,我认为 Entourage是它绊倒的应用程序之一,在这种情况下,除非你使用原始Apple事件代码,否则你运气不佳。其他选项是objc-appscript(m'baby),它更不容易出现此类问题,而AppleScriptObjC(10.6+)则允许您直接从AppleScript调用ObjC类,反之亦然。

  3. 您看过CSMail了吗?

  4. 随行人员将在Office 2010中转而使用Outlook,因此您可能不想投入大量时间来确定如何为其编写SB代码。