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:
Nobumi Iyanaga <[log in to unmask]>
Reply To:
Macintosh Scripting Systems <[log in to unmask]>
Date:
Thu, 30 Jul 2009 08:05:33 +0900
Content-Type:
text/plain
Parts/Attachments:
text/plain (95 lines)
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

ATOM RSS1 RSS2