Hi,

I’m using the Scripting Bridge to Target MS Outlook. I’m trying to figure out 
how to do the following AppleScript using the Scripting Bridge. Please see Full 
Script below, I’ve got most of the code, but I can’t seem to figure out the 
right Objective-C code for these two statements:

                set myObjectID to the id of (object of myWindow)
                set myContent to the plain text content of message id myObjectID

on run
        tell application id "com.microsoft.Outlook"
                activate
                set myWindow to the front window
                if class of myWindow is not draft window then
                        return "Error - Not Draft Window"
                end if
                
                set myObjectID to the id of (object of myWindow)
                set myContent to the plain text content of message id myObjectID
                
                return myContent
        end tell
end run


I have the following Objective-C code:

-(BOOL) outlookGetDraftWindowForWindowIndex:(NSInteger) theWindowIndex 
returnDraftWindow:(SXOutlook2011DraftWindow**) theDraftWindowPtr  
returnMessage:(SXOutlook2011OutgoingMessage**) theOutgoingMessagePtr
{
SXOutlook2011Application*                               myOutlookApp;
SBElementArray*                         myOutgoingMessageArray;
SBElementArray*                         myDraftWindowsArray;
SXOutlook2011DraftWindow*                               myDraftWindow;
SXOutlook2011OutgoingMessage*                   myOutgoingMessage;
SXOutlook2011Object*                                    myDraftObject;
NSInteger                               myDraftObjectID;

//**
//**    Get the Outlook Application
//**
myOutlookApp = [self.pSingletonManager.pScriptingBridgeManager 
getHandlerWithAppInternalID:kBundleIDOutlook];
if (myOutlookApp == nil)
        return NO;
        
if (theDraftWindowPtr != NULL)
        *theDraftWindowPtr = nil;

if (theOutgoingMessagePtr != NULL)
        *theOutgoingMessagePtr = nil;

myOutgoingMessageArray = [myOutlookApp outgoingMessages];
myDraftWindowsArray = [myOutlookApp draftWindows];
if ([myDraftWindowsArray count] < theWindowIndex)
        return NO;

myDraftWindow = [myDraftWindowsArray objectAtIndex:theWindowIndex];
if ([myDraftWindow exists] == NO)
        return NO;

//**
//**    Save the Window before Getting the Message
//**
[myDraftWindow saveIn:nil as:myDraftWindow.name];

myDraftObject = myDraftWindow.object;
if ([myDraftWindow exists] == NO)
        return NO;
        
myDraftObjectID = myDraftObject.id;
myOutgoingMessage = [self findMessageWithID:myDraftObjectID 
inArray:myOutgoingMessageArray];

if (theDraftWindowPtr != NULL)
        *theDraftWindowPtr = myDraftWindow;

if (theOutgoingMessagePtr != NULL)
        *theOutgoingMessagePtr = myOutgoingMessage;

return YES;
}


Which works but takes for ever because:

myOutgoingMessage = [self findMessageWithID:myDraftObjectID 
inArray:myOutgoingMessageArray];

Does a sequential search of the Outgoing Message array, which is ok if there 
are only a few messages but as soon as you get more than about 100 it takes way 
too long.

Any ideas on this would be greatly appreciated. 

All the Best
Dave














_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to