MACSCRPT Archives

July 2009

MACSCRPT@LISTSERV.DARTMOUTH.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Deivy Petrescu <[log in to unmask]>
Reply To:
Macintosh Scripting Systems <[log in to unmask]>
Date:
Thu, 30 Jul 2009 16:33:00 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (128 lines)
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]

ATOM RSS1 RSS2