Использование ScriptingBridge Framework для связи с Entourage - PullRequest
1 голос
/ 01 июня 2010

Мотивация для моего вопроса - следующий документ, который описывает, как mail.app может быть интегрирован с помощью ScriptingBridge:

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

Я пытался применить аналогичную технику и с Entourage, но пока не смог получить никаких результатов. Я понимаю, что использование AppleScript поможет мне решить мою проблему, и у mactech.com есть обширная документация для этого.

Но я считаю эту технику ScriptingBridge элегантной и хочу понять, почему она не работает для меня с Entourage.

Самой большой проблемой, по-видимому, является моя неспособность создавать классы сценариев на основе их имен, как это происходит в 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]];

`

Я пытаюсь заставить эту простую вещь работать, я даже не концентрируюсь на задаче, которую я должен сделать сейчас.

Я новичок в какао (и готов учиться), прошу прощения за синтаксические наивности и укажите их в примере кода, в дополнение к ответу на мой вопрос.

С наилучшими пожеланиями,

Субраманян

1 Ответ

1 голос
/ 01 июня 2010

Несколько вещей:

  1. Если вы застряли, сначала выясните, как это сделать в AppleScript. Это то, что используется большинством прикладных сценариев (то есть тех, кто лучше всего может вам помочь) и для чего написана почти вся документация. Реально, если вы хотите делать много сценариев приложений, вам действительно нужно выучить немного AppleScript (точно так же, как вам действительно нужно взять немного ObjC, чтобы использовать Cocoa из Python, Ruby и т. Д.).

  2. Scripting Bridge является неуклюжим, запутанным и подверженным проблемам совместимости приложений , поэтому преобразование рабочего кода AppleScript в него может быть сложным, если не невозможным, в зависимости от целевого приложения, команды, которые вы используете, и так далее. По памяти, я думаю Entourage - это одно из приложений, к которому он подключается, и в этом случае вам не повезло, если вы не прибегаете к использованию необработанных кодов событий Apple. Другие варианты: objc-appscript (m'baby), который гораздо менее подвержен таким проблемам, и AppleScriptObjC (10.6+), который позволяет вызывать классы ObjC непосредственно из AppleScript и наоборот.

  3. Вы смотрели на CSMail ?

  4. Entourage уходит в Office 2010 в пользу Outlook, поэтому вы, возможно, не захотите тратить огромное количество времени на выяснение того, как написать код SB для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...