Eingang neuer mails über applescript überprüfen!

img31

img31

Aktives Mitglied
Thread Starter
Dabei seit
15.12.2003
Beiträge
191
Reaktionspunkte
3
Ich bräuchte ein script welches möglichst im hintergrund jede Minute die mails überprüft.. wenn neue da sind soll mein PowerMate pulsieren.. :) den powermate anzusprechen ist kein problem.. ich hänge nur irgendwie am mails überprüfen.. schauts euch mal an:

PHP:
 tell application "Mail"
 	set unread_mail to 0
 	set every_mail to |SelectedMessages| of info
 		repeat with each_mail in every_mail
 			set unread_mail to (unread_mail + 1)
 			set the_sender to sender of each_mail
 			delay 2
 		end repeat
		
 if unread_mail is 1 then
 	tell application "PowerMateDriver"
		get pulse always
		set pulse always to true
	end tell
end


Hilfe!!
 
hat keiner eine idee?
 
sollte so gehen, kann es aber nicht testen da ich kein powermate habe...

Code:
repeat
tell application "Mail"
	set x to (count every message in inbox)
	check for new mail
	if (count every message in inbox) is greater than x then
	*tell application "PowerMateDriver" 
********get pulse always 
********set pulse always to true 
****end tell 
end if
end tell
delay 1
 
naja, diese sternchen da gehören da nicht rein, keine ahnung wo die herkommen...
 
hm.. da kommt beim übersetzen die fehlermeldung dass ein zeilenende erwartet wurde aber ein end of script gefunden wurde..
??
 
ah.. oh nein.. end repeat... :)))okay..

wie könnte man nun noch eine zeitschranke einbauen? so dass er nur einmal die mails überprüft und nich die ganze zeit.. und dass dann alle 5 minuten?

:)
 
einfach "Delay xy" as xy die zeit in sekunden setzten (du kannst aber auch für 5minuten "5*60" schreiben...

einfach vor das "end delay" sollte reichen.

gruß,
c
 
Mal ne blöde Frage: Kannst Du nichts das "Checken auf neue Mails" einer Regel in Mail.app überlassen? Und als Aktion definieren, dass Dein "PowerMate" angestossen wird?
 
Hilarious schrieb:
Mal ne blöde Frage: Kannst Du nichts das "Checken auf neue Mails" einer Regel in Mail.app überlassen? Und als Aktion definieren, dass Dein "PowerMate" angestossen wird?
da hab ich auch dran gedacht, aber wenn er es so macht wie in diesem script geschiet beides aufeinanderfolgend, sonst könnte es ja passieren das mail die mails bei zeit 0minuten 0sekunden abfragt, das script aber erst bei 4minuten55sekunden guckt ob was neues da ist, um dann wieder 4min 55 abstand zum nächsten abfragen etc zu haben...
 
wunderbar.. ich danke euch! Mit den Regeln in mail hatte ich auch shcon rumgespielt aber es kommt in der tat zu problemen... :)

mir ist gerade ein logischer fehler aufgefallen.....wenn das script jede minute meine mails abruft und es sind keine neuen da, und ich habe die neuen mails noch nicht gelesen dann zählt er sie ja nur.. d.h. der powermate hört auf zu pulsieren.. obwohl eine ungelesene mail im eingang ist... könnte man das script noch umändern, dass es die ungelesenen mails vergleicht?

hier der code:

PHP:
tell application "Mail"
	set x to (count every message in inbox)
	check for new mail
	repeat
		if (count every message in inbox) is greater than x then
			tell application "PowerMateDriver"
				get pulse always
				set pulse always to true
				get pulse rate
				set pulse rate to 15
				
			end tell
		end if
		
		if (count every message in inbox) is x then
			tell application "PowerMateDriver"
				get pulse always
				set pulse always to false
				
			end tell
		end if
		
	end repeat
end tell
delay 60
end delay
 
1. du brauchst kein "end delay" (funktioniert das überhaupt???)

2. da du innerhalb der schleife gar nicht mehr abfragst kann das gar nicht gehen...

3. um dafür zu sorgen das es doch geht (dann erledigt sich auch das problem das er aufhört zu puliseren) musst du noch ein repeat drumrum legen würde ich mal sagen...

4. du musst das "Delay 60" auch innerhalb der schleife schreiben wo er die mails abfragt... sonst frag er ja dauerhaft ab

schade das ich das nicht testen kann ohne powermate... was kostet das teil? scheint ja ganz witzig zu sein ;)
 
Zuletzt bearbeitet:
übrigens würde das script nicht aktiviert wenn du deine mails per regeln in mail.app in andere postfächer sortierst, da er nur den eingang überprüft...
 
powermate bei gravis für 55€ ich kann es dir nur empfehlen! Das ist einfach der hammer.. open source und für jedes programm programmierbar.. göttlich.. :) die scrollfunktion beim mac ist ja eh nicht soo toll.. mit der promouse... ;)

Nochmal kurz zum script.. wo muss ich eine schleife drum machen? Ich habe keine ahnung von applescript.... :)
 
Was machst Du sonst so noch mit dem Powermate? Ich hatte auch schon überlegt das Ding als Ersatz für das Scrollwheel zu nehmen. Da muss man aber noch mehr mit anstellen können - außer Lautstärke :)

Edit - hab den Erfahrungsbericht grade eben erst entdeckt. Wildwaters Bericht auch :)
 
Zuletzt bearbeitet:
img31 schrieb:
(...)wo muss ich eine schleife drum machen? Ich habe keine ahnung von applescript.... :)
ich auch nicht viel, learning by doing sach ich nur


oje...

das dauert noch, entweder ich hab grad nen dickes brett vorm kopf oder es wird kompliziert ;)
 
ich habe da gerade eine nette funktion in mail gefunden:

unread count integer [r/o] -- The number of unread messages in the mailbox

das könnte man doch sicherlich sehr simpel in das script einbauen oder?? :)
 
jau das ist das wonach ich lange gesucht habe ;)

muss allerdings weg, vlt guck ich heute abend nochmal dabei
 
Soll ein Skript in regelmäßigen Zeitabständen wiederholt werden, benutzt man einen 'idle'-Handler.

on idle
-- Anweisungen, die regelmäßig ausgeführt werden sollen
return 60 -- die Ausführung erfolgt alle 60 Sekunden
end idle

Ein solches Skript muss als Programm mit der Option "nicht automatisch beenden" gespeichert werden.
 
danke! dann sind wir ja schon mal ein stück weiter... :)
 
img31 schrieb:
danke! dann sind wir ja schon mal ein stück weiter... :)
auja!
vorrausgesetzt der teil des scripts für den PowerMate ist korrekt sollte es vlt so gehen...


Code:
on idle

tell application "Mail"

	check for new mail
	
	delay 15
	*-- wird benutzt um mail.app auch zeit zu lassen die mails erstmal abzufragen
	
****	if (unread count in inbox) is greater than 0 then 
************tell application "PowerMateDriver" 
****************get pulse always 
****************set pulse always to true 
****************get pulse rate 
****************set pulse rate to 15 
**************** 
************end tell 
********end if 
******** 
********if (count every message in inbox) is 0 then 
************tell application "PowerMateDriver" 
****************get pulse always 
****************set pulse always to false 
**************** 
************end tell 
********end if

end tell 

return 60
end idle

also, das script so speichern das es sich nicht automatich beendet, die regeln der automatischen abfrage in mail abschalten. ausserdem läuft das script nur wenn deine neuen mails auch wirklich im eingang sind, sprich mails die direkt in ordner sortiert werden beachtet er nicht...

aber meinst du es ist sinnvoll jede minute abzufragen?!? also mir reichen die 5 die mein mail abfragt... das nervt schon oft genug
 
Zurück
Oben Unten