On Jul 29, 2009, at 7:05 PM, Nobumi Iyanaga wrote:
> Hello John and Deivy,
>
>
> On Jul 29, 2009, at 10:50 PM, Deivy Petrescu wrote:
>> play with the script below, it should give you some ideas.
>> By the way, in all the Macs I've tested here last message returns
>> the last by the earliest date.
>> I've no idea what is the problem with your Mail...
>
> Yes, this is really strange, but in my two machine, running OS 10.4
> and 10.5, I have the same result...
>>
>>
>> set mb to 1
>> set acct to 1
>> set First_Msg to 250
>> set Last_Msg to 200
>>
>> --script that in this case erase repeated messages in the range
>> 200 to 250 from the mailbox mb of account acct
>>
>> with timeout of 3900 seconds
>> tell application "Mail"
>> --tell mailbox mb of account acct to set al to every message
>> whose date received < (current date)
>> --return al
>> set alist to {}
>> set anumber to count messages in mailbox 1 of account 1
>> tell mailbox 1 of account 1 to repeat with jj from 0 to 10
>> set end of alist to ({sender, subject, date received} of message
>> (anumber - jj)) & ("Message number: " & (anumber - jj))
>> end repeat
>> (*
>> repeat with msg from First_Msg to Last_Msg by -1
>> if (message id of message msg) = (message id of message (msg -
>> 1)) then delete (message msg )
>> end repeat
>> *)
>> end tell
>> end timeout
>> alist
>
> Thank you for this example.
>
> Combining your two scripts, I tested the following script:
>
> tell application "Mail"
> set _selected to first item in (get selection)
> set received to date received of _selected
> set _mailbox to mailbox of _selected
> set _range to messages in _mailbox whose date received ≥ received
>
> set _messageids to {}
> repeat with _i in _range
> set end of _messageids to message id of _i
> set end of _messageids to {sender, subject, date received} of _i
> end repeat
> _messageids
> end tell
>
> This works very well. Now, I have to try to delete one of the
> messages of the same message id. As I cannot use the message number
> as in Deivy's example, I think I will have to do something like this:
>
> tell application "Mail"
> set _selected to first item in (get selection)
> set received to date received of _selected
> set _mailbox to mailbox of _selected
> set _range to messages in _mailbox whose date received ≥ received
>
> --set _messageids to {}
> set last_id to "mydummy"
> repeat with _i in _range
> --set end of _messageids to message id of _i
> --set end of _messageids to {sender, subject, date received} of _i
> set this_id to message id of _i
> if this_id = last_id then
> delete message last_id
> end if
> set last_id to message id of _i
>
> end repeat
> -- _messageids
> end tell
>
> For now, I cannot test this script. Do you think this would work...?
>
> Thank you very much in advance.
>
> Best regard,
>
> Nobumi Iyanaga
> Tokyo,
> Japan
Nobumi
Do everything in one pass:
tell application "Mail"
activate
set _selected to first item in (get selection)
set received to date received of _selected
set _mailbox to mailbox of _selected
set _range to messages in _mailbox whose date received ≥ received
set _messageids to {}
repeat with _i in _range
set _i to contents of _i
set _mid to message id of _i
if _mid is not in _messageids then
set end of _messageids to _mid
else
delete _i
end if
end repeat
end tell
Deivy Petrescu
[log in to unmask]
|