AppleScript für Spamanfrage?

Von AppleSkript & Automator bis hin zu Objective C

AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Mo 24. Feb 2014, 18:23

Hi,
Gibt es eine Möglichkeit mit dem AppleScript die Anzahl der Spams in Mail auszugeben?

Danke im voraus
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Mo 24. Feb 2014, 20:34

Du kannst ein Count der Mails in diesem Postfach ausgeben lassen. Das ist aber nicht besser als der Count oben in der Titelleiste.

Was hast du genau vor?

Code: Alles auswählen
tell application "Mail"
   set inboxes to first mailbox of every account whose name is "SPAM"
   set messageCount to 0
   repeat with i from 1 to number of items in inboxes
      
      set this_item to item i of inboxes
      if this_item is not missing value then
         set thisCount to (count of (messages of this_item))
         set messageCount to thisCount + messageCount
         log thisCount
      end if
   end repeat
   
end tell
log messageCount


Dieser Code zeigt dir die Anzahl der Mails an die in dem Postfach Spam für alle Accounts in Mail ist. Du kannst das Postfach ändern indem du es oben bei "SPAM" änderst. Problem ist hier, es gibt in der Mailstruktur ab und zu nicht gelöschte Mails die im Library-Ordner sind. Das kann auch zu anderen Zahlen kommen. Auch weiß ich nicht wie das mit dem Konversionsmist ist.
Beachte das du in Apple-Script das Event-Protokoll aktiviert hast um die Anzahl zu sehen.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 14:46

also ich will wieder mit GeekTool anfangen und habe mir aus einigen Schippten was zusammengebastellt. das funktioniert soweit gut ich will nur noch die Anzahl der Spams mit dadrin haben.
hier ist der code mit der Anzahl der Mails:
Code: Alles auswählen
tell application "Mail"
   set unreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & unreadCount & " میل") & return
   else
      set messageCountDisplay to "میل ۰"
   end if
end tell


Ps. wenn ich dein Script Ausführe, passiert absolut garnix.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Di 25. Feb 2014, 15:22

Verstehe dein Problem nicht. Vielleicht auch weil ich mit GeekTool nichts am Hut habe.

Du kannst doch meinen Part in deinen einbinden, oder anders herum. Dir geht es doch nur um den Count.

die Variable thisCount gibt es pro Postfach bei mir aus und messageCount ist die Gesamtzahl über alle Postfächer. Eigentlich jetzt nichts was dich daran hindert die Variablen umzubenennen und bei dir einzubinden. Dein if halt trennen von meinem repeat.

GeekTool fragt doch dann sicherlich nach dem messageCountDisplay um es darzustellen. Da gibst du ihm für Spam dann halt einfach mein messageCount und schon hast du alle Spam-Mails drin.

Oder willst du das alle ungelesenen Mails der Inbox oder von Mail plus die ungelesenen Spam-Mails mit drin haben?

Die ungelesenen Spam-Mails bekommst du mit deinem Code, ändere dann aber "inbox" zu "junk mailbox".

Was sollen diese, weiß es nicht besser, arabischen Zeichen in der message?

Gruß Soundtrack

Edit: Bist du in AppleScript den auch auf Event-Protokoll und dann auf Events und Antworten? Dort solltest du dann die Zahlen finden. Ich habe bei mir mit log gearbeitet um die Zahlen auszugeben. Die sind dann nicht bei Ergebnis zu finden. Wenn du noch einmal command+3 drückst sollte es auch erscheinen.
Zuletzt geändert von Soundtrack am Di 25. Feb 2014, 15:35, insgesamt 1-mal geändert.
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 15:32

ok, also mir geht es jetzt in erster Linie um den script, denn GeekTool ist nur zum anzeigen der Werte da.
also ich habe deinen Vorschlag mit dem Junk Mailbox benutzt aber jetzt zählt er die Spams und die normalen mails zusammen. kann ich das irgendwie trennen?
hier ist der code:
Code: Alles auswählen
tell application "Mail"
   set unreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & unreadCount & " میل") & return
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set unreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & unreadCount & " اسپم") & return
   else
      set messageCountDisplay to "اسپم ۰"
   end if
end tell


Ps. die persischen Wörter stehen einmal für "Mail = میل" und einmal für "Spam = اسپم" und haben keine Auswirkung auf die Ausgabe der Werte.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Di 25. Feb 2014, 15:48

Okay.

Also du solltest die Variablen ändern.

also unreadCount in mailunreadCount und messageCountDisplay bleibt so

dann den zweiten unreadCount in spamunreadCount und messegeCountDisplay in spamCountDisplay

Es ist eigentlich egal wie du diese benennst, es erleichtert aber das Verständnis.

Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & mailunreadCount & "")
   else
      set messageCountDisplay to ""
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to ("" & spamunreadCount & "")
   else
      set spamCountDisplay to ""
   end if
end tell
log messageCountDisplay
log spamCountDisplay


Ich habe noch log eingefügt zur Kontrolle. Die kannst du bei ordentlicher Funktion wieder herausnehmen. Ach und dein Persisch nicht vergessen.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 16:13

ich weiß nicht woran das liegt aber da verändert sich nix.
hier der code:
Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & mailunreadCount & " میل")
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to ("" & spamunreadCount & " اسپم")
   else
      set spamCountDisplay to "اسپم ۰"
   end if
end tell


achja, wenn ich das so starte steht dann am ende die Anzahl der spams und mails und das wort für Spam und wenn ich die Logs einfüge ist selbst das auch weg.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Di 25. Feb 2014, 16:58

Ich glaube dir fehlt ein grundlegendes Verständnis des AppleScript Editors. Das Event-Protokoll listet einfach nur auf was passiert. Die Ausgaben sind auch nur das was gerade passiert.

Die Texte für den CountDisplay werden aber korrekt angelegt. Das kann man sehen wenn man es mit display anzeigen lässt.

Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("" & mailunreadCount & " میل")
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to ("" & spamunreadCount & " اسپم")
   else
      set spamCountDisplay to "اسپم ۰"
   end if
end tell

display dialog messageCountDisplay
display dialog spamCountDisplay


Wie schon gesagt, die Frage ist am Ende was GeekTool braucht. Wenn es die Variablen so nimmt wie auch das display dialog ist alles okay. Nur weiß ich das nicht für GeekTool.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 17:12

also ich muss auch mal erwähnen, dass ich kaum mit dem AppleScript gearbeitet habe und die Scripte die ich benutze habe ich mit viel mühe aus dem internet zusammen gesucht und durch einige Youtube Videos und forumbeiträge versucht zu verstehen wie das funktioniert.

so, jetzt mal zu GeekTool. GeekTool braucht das was beim AppleScript unten steht (siehe Bild). das bedeutet man spricht mit GeekTool, durch einen Terminal Befehl, den Script den man erstellt hat und bekommt dann das, was beim AppleScript unten zusehen ist aus.

Ps. dein Code mit dem Display ist gut so, nur sollen diese Angaben nicht ständig erscheinen und auch nicht in Dialogboxen sein, sondern einfach unten stehen.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 17:25

ich habe grad heraus gefunden, je nachdem welche "Code Gruppe" als letztes eingefügt wird, wird nur das angezeigt und das erste einfach ignoriert.
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Di 25. Feb 2014, 18:51

Also, ich habe gerade festgestellt, die Ausgabe richtet sich auch nach der Sprache. Das wusste ich vorher gar nicht weil ich sonst nie persisch benutze.

So wird mit (Reihenfolge bei ...CountDisplay beachten)

Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to (mailunreadCount & space & "میل")
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to (spamunreadCount & space & "اسپم")
   else
      set spamCountDisplay to "اسپم ۰"
   end if
   set textGeekTool to (messageCountDisplay & linefeed & spamCountDisplay)
end tell

get textGeekTool


Ergebnis

Code: Alles auswählen
{0, " ", "میل", "
", 0, " ", "اسپم"}


Was ja heißt von rechts nach links gelesen oder so. Das wäre dann für AppleScript eine Liste in persischer Sprache angelegt
Wenn ich aber das getauscht wird und quasi Logisch für arabische/persische Leserichtung ist, dann wie folgt:

Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("میل" & space & mailunreadCount)
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to ("اسپم" & space & spamunreadCount)
   else
      set spamCountDisplay to "اسپم ۰"
   end if
   set textGeekTool to (messageCountDisplay & linefeed & spamCountDisplay)
end tell

get textGeekTool


Ergebnis

Code: Alles auswählen
میل 0"
"اسپم 0


Dieser ist dann aber für die westliche Leserichtung falsch und führt beim einsetzen von Mails bei میل und Spam bei اسپم zu dem Ergebnis

Code: Alles auswählen
"Mail 0
Spam 0"


Ist leider etwas verzwickt. Ich bin mir da nicht so sicher ob das am Ende auch Geektool so nimmt und ob du damit zufrieden bist.

Also noch einmal folgende Varianten kann ich dir bieten, schaue dir die Ergebnisse an und sage dann mal welches das beste ist für dich:

Code 1
Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to (mailunreadCount & space & "میل")
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to (spamunreadCount & space & "اسپم")
   else
      set spamCountDisplay to "اسپم ۰"
   end if
   set textGeekTool to (messageCountDisplay & linefeed & spamCountDisplay) as string
end tell

get textGeekTool


Code 2
Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("میل" & space & mailunreadCount)
   else
      set messageCountDisplay to "میل ۰"
   end if
   
   set spamunreadCount to (get unread count of junk mailbox)
   if (count of mailboxes) > 0 then
      set spamCountDisplay to ("اسپم" & space & spamunreadCount)
   else
      set spamCountDisplay to "اسپم ۰"
   end if
   set textGeekTool to (messageCountDisplay & linefeed & spamCountDisplay)
end tell

get textGeekTool


Die Ergebnisse mit den " sind leider so. Das scheint an der persischen Schrift zu liegen. Wenn ich es mit Mails und Spam mache ist es quasi richtig mit:
Code: Alles auswählen
"0 Mails
0 Spam"


Um einzelne Textteile zu haben würde es sich anbieten 2 AppleScript-Dateien zu erzeugen, eine für Spam und eine für Mails. Dann hast du das Problem mit den " nicht wegen dem Umbruch. Für Mails sieht das so aus.

Code: Alles auswählen
tell application "Mail"
   set mailunreadCount to (get unread count of inbox)
   if (count of mailboxes) > 0 then
      set messageCountDisplay to ("میل" & space & mailunreadCount)
   else
      set messageCountDisplay to "میل ۰"
   end if
   
end tell

get messageCountDisplay


Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 19:15

also für mich funktioniert der Code 1 sehr gut, genau das was ich wollte. und auch die richtige Reihenfolge, denn man schreibt im persischen, wie auch beim arabischen, von rechts nach links und da ist es sinnvoller zuerst die zahl und dann das Wort zu zeigen.
noch eine letzte Frage. kann man im Script irgendwie den Zeilenabstand ändern?
oder weißt du ob man in diesem Dialogfenster(siehe Bild) den Zeilenabstand ändern kann?
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Di 25. Feb 2014, 19:48

Also unter Menüleiste-Format-Zeilenabstand gibt es ja einen Punkt dafür. Allerdings habe ich weder beim auswählen von Text oder anderen Dingen geschafft diesen Menüeintrag zu aktivieren. Sonst weiß ich auch keinen Weg, liegt vielleicht daran, das mir der Code so schon gefällt und ich AppleScript nur so mal zu Anfangszeiten von AppleScript angeschaut habe.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Di 25. Feb 2014, 21:14

weißt du denn zumindest, wie man das durch einen terminal Befehl einrichten kann? ich mach das mit GeekTool so, dass ich den Script mit dem Terminal Befehl,
Code: Alles auswählen
osascript /Users/Simorgh/Documents/GeekTool/scripts/mail2.scpt
, ausgeben lasse. kann man nicht am Ende was einfügen, damit die Zeilenabstände sich ändern?
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Mi 26. Feb 2014, 06:47

Ich kann zwar ein paar Dinge mit dem Terminal, aber das ganz sicher nicht. Das Problem ist doch das es sich um eine Formatierung handelt und nicht einfach nur um eine Manipulation des eigentlichen Textes.

Für das Terminal kann man den Abstand ändern in den Einstellungen und dort die Schrift ändern.

Ich verstehe auch nicht was dich an den Zeilenabständen stört, sicherlich kannst du da auch in GeekTool etwas einstellen.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Mi 26. Feb 2014, 16:37

ich habe das mit dem Zeilenabstand so gelöst:
Code: Alles auswählen
osascript /Users/Simorgh/Documents/GeekTool/scripts/mail.scpt | sed '/میل/G'


habe aber jetzt was anderes festgestellt. immer wenn ich mail beende, wird es wieder aufgerufen. das hat glaub ich was mit dem script zutun. oder?


hatte am Anfang diesen Script gefunden und benutzt aber jetzt wird da einfach nix mehr ausgegeben. und ich glaube, dass ein teil davon dafür sorgt, dass wenn mail nicht offen ist, er es nicht einfach öffnet sondern sagt, dass mail nicht offen ist.
Code: Alles auswählen
set newline to ASCII character 10
tell application "System Events" to set iCalIsRunning to (name of processes) contains "Mail"
set finalText to ""
if iCalIsRunning then
   tell application id "com.apple.mail"
      set unreadCount to (get unread count of inbox)
      if unreadCount > 0 then
         set theMessages to (messages of inbox whose read status is false)
         repeat with i from 1 to number of items in theMessages
            set thisMessage to item i of theMessages
            set fromMsg to (sender of thisMessage as string)
            set subjMsg to (subject of thisMessage as string)
            if subjMsg = "" then
               set subjMsg to newline & "     No Subject"
            else
               set subjMsg to newline & "     " & subjMsg
            end if
            set finalText to ("" & unreadCount & " میل")
         end repeat
      else
         set finalText to "۰ میل"
      end if
   end tell
else
   set finalText to "میل باز نیست‌!"
end if
finalText
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Do 27. Feb 2014, 12:42

hey,
wer sagt's denn? ich habe es doch noch geschafft.
ich habe es so gemacht:
Code: Alles auswählen
if application "Mail" is running then
   tell application "Mail"
      set mailunreadCount to (get unread count of inbox)
      if (count of mailboxes) > 0 then
         set messageCountDisplay to (mailunreadCount & space & "میل")
      else
         set messageCountDisplay to "میل ۰"
      end if
      
      set spamunreadCount to (get unread count of junk mailbox)
      if (count of mailboxes) > 0 then
         set spamCountDisplay to (spamunreadCount & space & "اسپم")
      else
         set spamCountDisplay to "اسپم ۰"
      end if
      set textGeekTool to (messageCountDisplay & linefeed & spamCountDisplay) as string
   end tell
else
   set Display to "میل باز نیست!"
end if
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon Soundtrack » Do 27. Feb 2014, 14:08

Na das ist doch super. Ich hatte noch keine Zeit mir das anzusehen.

Also dein Code von gestern kann ich noch nicht ganz interpretieren. Es scheint aber so als wenn du damit wirklich dauerhaft dem System Events gesagt hast es soll Mail öffnen, bzw. wenn das Script Aktiv soll es Mail öffnen.

Aber da es ja jetzt mit dem Code von heute klappt, der auch bedeutend logischer ist für das was du machen willst (Prüfen ob Mail an oder aus ist). Natürlich ist das nicht für alle dann gut, aber so lange es mit Deutschen System und Persischen System geht ist doch alles okay.

Kannst ja dann mal einen Screenshot posten wie das mit Geektool aussieht. Vielleicht schaue ich mir mal GeekTool an.

Gruß Soundtrack
Benutzeravatar
Soundtrack
Veteran
Veteran
 
Beiträge: 2855
Registriert: Fr 21. Nov 2008, 11:17

Re: AppleScript für Spamanfrage?

Beitragvon Dark_Scorpion » Do 27. Feb 2014, 14:38

also man kann da zwar noch viel mehr damit machen aber ich habe das eher schlicht gehalten. also links habe ich die besagte Mailabfrage, unten ist wie man unschwer erkennen kann ein Zitat Anzeiger und oben ist einmal der Uptime Anzeiger und daneben die Mondphasen, was ich mir selbst zusammengetragen habe, weil ich nirgendwo im internet was dazu gefunden haben. worauf ich auch ein wenig stolz bin. ;-D
Benutzeravatar
Dark_Scorpion
Veteran
Veteran
 
Beiträge: 1312
Registriert: Mi 10. Mai 2006, 18:53

Re: AppleScript für Spamanfrage?

Beitragvon MacBit » Fr 28. Feb 2014, 10:00

Tolles Hintergrundbild (aka. Wallpaper) hast Du. 8-)

;-)
Benutzeravatar
MacBit
Veteran
Veteran
 
Beiträge: 2725
Registriert: Mi 20. Feb 2008, 01:56
Wohnort: Bern (Schweiz)


Zurück zu Skripte & Programmierung