Eingang neuer mails über applescript überprüfen!

Diskutiere das Thema Eingang neuer mails über applescript überprüfen! im Forum Scripting und Automatisierung. Ich bräuchte ein script welches möglichst im hintergrund jede Minute die mails überprüft.. wenn neue da sind soll...

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
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!!
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
naja, diese sternchen da gehören da nicht rein, keine ahnung wo die herkommen...
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
hm.. da kommt beim übersetzen die fehlermeldung dass ein zeilenende erwartet wurde aber ein end of script gefunden wurde..
??
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
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?

:)
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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
 

Hilarious

Mitglied
Mitglied seit
25.11.2004
Beiträge
2.185
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?
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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...
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
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
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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:

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
ü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...
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
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.... :)
 

flippidu

Mitglied
Mitglied seit
25.08.2003
Beiträge
2.699
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:

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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 ;)
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
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?? :)
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
jau das ist das wonach ich lange gesucht habe ;)

muss allerdings weg, vlt guck ich heute abend nochmal dabei
 

Snow

Mitglied
Mitglied seit
24.03.2003
Beiträge
262
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.
 

img31

Mitglied
Thread Starter
Mitglied seit
15.12.2003
Beiträge
191
danke! dann sind wir ja schon mal ein stück weiter... :)
 

cbecker-nrw

Mitglied
Mitglied seit
16.08.2004
Beiträge
1.866
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
 
Oben