Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Apple Mail: Nachricht per Apple Script verschieben

Apple Mail: Nachricht per Apple Script verschieben

macscout
macscout06.09.1613:42
Ich bin gerade etwas ratlos. Ich habe angefangen, in Apple Mail mit Etiketten zu arbeiten. Dabei markiere ich Mails mit Etiketten ("heute", "morgen", "diese Woche", ...), um sie gezielter abzuarbeiten. Wenn sie markiert sind, können sie aus dem Posteingang natürlich raus. Dafür habe ich ein Postfach "To-Do" angelegt. Nun möchte ich aber nicht jede Mail einzeln erst mit Etikett versehen und dann manuell verschieben. Eine Regel dafür gibt es leider nicht, das Etikett steht als Bedingung in Regeln nicht zur Verfügung. Nun dachte ich, dass ich das gut mit einem Apple Script lösen könnte. Das Apple Script weigert sich aber beharrlich, die Mail in den Ordner zu verschieben. Etikett setzen geht ohne Probleme, aber ich finde nirgendwo den korrekten Weg, um eine Nachricht zu verschieben. Über Google habe ich nur haufenweise alte Treffer, die mit dem aktuellen Mail nicht mehr funktionieren.

Momentan sieht es ungefähr so aus:
tell application "Mail"
    set maillist to selection
    set todo_mailbox to "Boxer/To-Do"
    repeat with i from 1 to number of items in mail list
        set this_item to item i of mail list
        if class of this_item is message then
            set flag index of this_item to 1
            set message_foldername to mailbox of this_item
            set mailbox of this_item to todo_mailbox
        end if
    end repeat
end tell
Für "set mailbox of this_item to todo_mailbox" habe ich diverse Varianten durchprobiert, nichts funktioniert. Hat jemand einen Tipp, was ich falsch mache? Ich schätze, "mailbox" ist read only und kann nicht so einfach gesetzt werden, aber ein "move message" o.ä. kann ich nicht finden. Das muss doch irgendwie gehen.
Wenn man sich umsieht, findet man Zeilen wie
move every message of mailbox "Deleted Messages" of account "Roundcube" to mailbox "Deleted Messages"
oder
move messages 1 through 3 of mailbox "Archive" to mailbox "Gelöschte Objekte"
Ich bekomme dann:
error "„Mail“ hat einen Fehler erhalten: „mailbox \"Archive\"“ kann nicht gelesen werden." number -1728 from mailbox "Archive"

Hat jemand eine Idee?
0

Kommentare

macscout
macscout07.09.1617:10
So, habe es gelöst bekommen. Falls mal jemand durch die Suchfunktion über meine Frage stolpert, kommt hier die Lösung. So sieht es jetzt aus:
tell application "Mail"
    set list_of_messages to selection
    repeat with i from 1 to number of items in list_of_messages
        set this_message to item i of list_of_messages
        if class of this_message is message then
            set flag index of this_message to 0
            move this_message to mailbox "Boxer/To-do" of account "Exchange"
        end if
    end repeat
end tell
Der flag index geht bei 0 los (rotes Fähnchen), 1 = orange, ..., -1 ist unflagged
Das ganze wandert jetzt als Script in BetterTouchTool, damit ich es noch per Shortcut aufrufen kann. Perfekt ...
0
maculi
maculi07.09.1617:36
Nur mal so, weil ich neugierig bin: Warum das ganze nicht über intelligente Ordner lösen? Ok, darüber ist kein verschieben möglich, aber Struktur kriegt man trotzdem rein. Habs eben mal getestet, funktioniert prima (neue intelligente Postfächer einrichten, als Bedingung Etikett rot, gelb, grün...,) und was abgearbeitet ist wird dann von Hand in Erledigt geschoben.
0
macscout
macscout07.09.1619:49
Das hatte ich zuerst probiert. Es hat aber diverse Nachteile gegenüber meiner jetzigen Lösung.
1. Kein Verschieben aus dem Posteingang (das hattest Du ja schon erwähnt)
2. Kein Shortcut, um das Etikett zu setzen
3. Redundanz, da ich oben die Etiketten stehen habe und unten noch mal die Ordner
Aber das entscheidende Kriterium:
4. Ich kann bei intelligenten Ordnern nicht erkennen, wie viele Nachrichten sich darin befinden. Ich müsste also jedes Mal nachsehen, ob sich bspw. in "Etikett Rot" noch eine Nachricht befindet. Bei den Fähnchen selbst steht daneben, wie viele Nachrichten es sind (oder gibt es dafür eine Einstellung?). Das erleichtert mir den Überblick, und nach Erleichterung habe ich ja gesucht.
Ich wäre also auch ohne Script den Weg nur über die Etiketten ohne intelligente Ordner gegangen. Mit Script ist es jetzt bequemer, das Resultat ist aber das gleiche: mehr Übersicht.
0
maculi
maculi08.09.1609:08
das, was ich gestern geschrieben hab, bezieht sich nur auf die Geschichte mit den Etiketten. Wenn man das mit ein paar anderen Einstellungen kombiniert, dann kann es schon wieder anders aussehen.

Ich hab Mail bei mir so eingestellt, das eingehende mails direkt in die zugehörigen Postfächer (per passender Regel) verschoben werden. Also, mail von Kunde1 kommt ins Postfach Kunde1, mail von LieferantB kommt ins Postfach LieferantB. Um nicht zig Postfächer durchsehen zu müssen, wo die neue mail ist, hab ich ein intelligentes Postfach angelegt, das lapidar neu heißt, und in dem alles ungelesene angezeigt wird. Bei mir gibt es dort auch einen roten Klecks mit der aktuellen Zahl drin, wieviel mails noch drin sind. Wenn ich nachseh, was neues da ist, dann brauch ich dazu nur dieses eine Postfach öffnen. Per Rechtsklick könnte man dann die Etiketten zuweisen, damit man weiss, um was man sich noch kümmern muss.
0
struffsky
struffsky08.09.1609:14
Verschieben geht aber über Regeln in den Einstellungen.
0
macscout
macscout08.09.1609:51
maculi
[...] Bei mir gibt es dort auch einen roten Klecks mit der aktuellen Zahl drin, wieviel mails noch drin sind. Wenn ich nachseh, was neues da ist, dann brauch ich dazu nur dieses eine Postfach öffnen. Per Rechtsklick könnte man dann die Etiketten zuweisen, damit man weiss, um was man sich noch kümmern muss.
Bei mir sind aber Mails, denen ich ein Etikett gebe, gelesen, also habe ich keine Info am intelligenten Postfach, wie viele Mails sich darin befinden, Außer ich markiere sie immer als ungelesen, aber das wäre ja noch umständlicher.
Und Dein Workflow unterscheidet sich deutlich von meinem, da ich viele Mails bearbeiten muss, die keiner Regel folgen.
struffsky
Verschieben geht aber über Regeln in den Einstellungen.
Es gibt aber keine Abfrage in den Regeln, ob etwas ein Etikett hat. Also geht es nicht. Ich kann in Regeln Etiketten vergeben, aber nicht abfragen, warum auch immer. Vermutlich geht Mail davon aus, dass Regeln nur beim Eingang angewendet werden, und da haben sie natürlich nie ein Etikett. Das mit den Regeln war meine erste Idee, um dann das Postfach von allen Etiketten-behafteten Mails zu befreien. Aber da bin ich schon gegen den ersten Poller gelaufen.
Das mit dem Script ist für meine Bedürfnisse die einzige Lösung und es funktioniert ja super. BetterTouchTool habe ich sowieso installiert, hatte es nur bisher ausschließlich für das Fenster-Handling benutzt (ich weiß gar nicht, wie ich vorher ohne ausgekommen bin).
Um es noch mal zu verdeutlichen, hier ein Screenshot (intelligente Postfächer vs. "Markiert"-Ordner). Und BTW: Die "Markiert"-Ordner sind ja im Prinzip Intelligente Postfächer.

0
macscout
macscout09.09.1612:21
So, von perfekt ist das Ganze dann doch noch weit entfernt. Ich mache gerade Bekanntschaft mit der Softwarequalität von Apple. Wenn ich mir überlege, dass das ein zentrales Tool meiner tägliche Arbeit ist, wird mir ganz anders.
Bug 1: Wenn ich das Script oben ausführe, sieht man kurz, dass das Etikett gesetzt wird, dann wird die Mail verschoben und dann ist das Etikett wieder weg. :'(
Offensichtlich ist das Script zu schnell für Mail. Wenn man zwischen das Setzen des Etiketts und das Verschieben eine Sekunde delay setzt, geht alles wie erwartet. Warum ein Merkmal, das ja ganz deutlich gesetzt ist (ich sehe es ja) bei einem zu schnellen Verschieben verschwindet, kann eigentlich in einer Software nicht vorkommen. Was da programmiertechnisch zusammengestümpert wurde, kann ich mir kaum vorstellen.
Bug 2: Wenn ich eine Mail verschiebe, die sich schon da befindet, wo sie hin verschoben werden soll, verschwindet die Mail im Nirvana. Ich finde sie jedenfalls nicht wieder. Was für ein Quatsch.

Naja, das lässt tief blicken, wie es im Inneren unseres Mac aussieht.

Stand jetzt:
tell application "Mail"
    set list_of_messages to selection
    repeat with i from 1 to number of items in list_of_messages
        set this_message to item i of list_of_messages
        if class of this_message is message then
            set flag index of this_message to 0
            delay 1
            if mailbox of this_message is not mailbox "Boxer/To-do" of account "Exchange" then
                move this_message to mailbox "Boxer/To-do" of account "Exchange"
            end if
        end if
    end repeat
end tell
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.