How do I stop AppleScript from selecting all messages in a Mail.app conversation when I only want one from the group?

StackOverflow https://stackoverflow.com/questions/15552006

  •  29-03-2022
  •  | 
  •  

Question

Here's my itch: I want to add emails to Reminders.app as todo items. I figured that part out. My next goal was to be able to select multiple emails and have Reminders.app create todos for each email selected. I figured that part out.

The problem: When I select an email that is part of a conversation ALL messages from that conversation are added as individual reminders/todos. This part may be confusing but I'll try to be as detailed as possible in describing how I'm selecting messages. In Mail.app I'm selecting a message in the far right-side pane where all emails that part of the conversation are presented in a scrollable list. It's this area where I'm selecting a particular message. So even though I'm selecting one message from a conversation, all messages in that conversation are added to my AppleScript list variable and, subsequently, turned into reminders/todos.

If I turn off 'Organize by Conversation' in Mail.app the problem goes away. I like the cleanliness of organizing my emails by conversation so if there's a scripting solution to this problem I'd prefer that route. However, I can't think of any way to fix this so I'm hoping someone here has some thoughts.

Here's my script:

property defaultList : "Parking Lot"

on newReminder(theBody, theTitle)
    tell application "Reminders"
        tell list defaultList
            make new reminder with properties {body:theBody, name:theTitle}
        end tell
    end tell
end newReminder


tell application "Mail"
    set selectedMessages to {}
    set selectedMessages to selection
    if (count of selectedMessages) is 0 then
        return "Please select a message in Mail.app and try again."
    else
        repeat with i from 1 to (count of selectedMessages)
            tell item i of selectedMessages
                set messageid to message id
                set urlText to "message://" & "%3c" & messageid & "%3e"
                set theSender to extract name from sender
                set theSubject to subject
                my newReminder((theSender & " " & urlText), theSubject)
            end tell
        end repeat
    end if
end tell
Was it helpful?

Solution

The AppleScript property selection for the Mail application appears to ignore whether a single message from a conversation is highlighted in the preview pane (the rightmost pane in OS X Lion's layout). The selection is determined solely by which messages are selected in the message list (the middle pane). If you want to utilize selection in your AppleScript for a single message of a conversation, you'll have to select the single message from the message list,

instead of the preview pane.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top