2017-07-25 9 views
0

Ich versuche, ein Sub-Postfach in Apple Mail mithilfe von JavaScript zu erstellen.JXA: Erstellen eines Postfachs in Apple Mail

Ich habe den folgenden Code-Schnipsel (parent ein Verweis auf die Mailbox, in dem ich die neuen Mailbox will):

var mb = mail.Mailbox({name: "SubFolder"}); 
parent.mailboxes.push(mb); 

Die Ereignisse Protokoll zeigt:

app = Application("Mail") 
app.mailboxes.byName("Local").mailboxes.byName("Archive").mailboxes.push(app.Mailbox({"name":"SubFolder"})) 

    --> Error -10000: AppleEvent handler failed. 

Was soll ich tun falsch?

Danke, Craig.

-Code jetzt:

var mb = mail.Mailbox({name: "Local/Archive/Test Archive/SubFolder"}) 
logger.logDebug("mb = '" + Automation.getDisplayString(mb) + "'."); 
mail.mailboxes.push(mb)      // create the subfolder 

Diese so lange funktioniert, da es keine Leerzeichen im Pfad. Ich habe versucht, den Raum mit \\ davor zu zwingen, aber dann erhalten Sie "Test \ Archive" als Name.

Also wie bekomme ich einen Platz im Namen zu arbeiten?

Danke.

Antwort

1

Um einen Unterordner zu erstellen, benötigen Sie einen Namen wie einen Posix-Pfad ->"/theMasterMailbox/subMailBox1/subMailBox2/subMailBox3".


So benötigen Sie:

  • Eine Schleife den Namen jedes übergeordneten Ordner in ein Array zu setzen.
  • Verwenden Sie join('/'), um die Elemente eines Arrays zu einer Zeichenfolge zusammenzufassen.
  • Verwenden mail.mailboxes.push(mb) statt parent.mailboxes.push(mb)

Hier ist ein Beispielskript, das eine Mailbox "SubFolder" im ausgewählten Ordner (die Mailbox) mit dem Namen erstellt:

mail = Application('com.apple.Mail') 
parent = mail.messageViewers()[0].selectedMailboxes()[0] 

mboxNames = [parent.name()] 
thisFolder = parent 
try { 
    while (true) { // loop while exists the parent folder 
     mboxNames.unshift(thisFolder.container().name()) // add the name of the parent folder to the beginning of an array 
     thisFolder = thisFolder.container() // get the parent of thisFolder 
    } 
} catch (e) {} // do nothing on error, because thisFolder is the top folder 

mboxNames.push("SubFolder") // append the name of the new subFolder to the array 

mBoxPath = mboxNames.join('/') // get a string (the names separated by "/") 
mb = mail.Mailbox({name:mBoxPath}) 
mail.mailboxes.push(mb) // create the subfolder 
+0

Dank. Ich habe das gerade gesehen, als ich nicht benachrichtigt wurde, als du gepostet hast. Ich werde das in einer Sandbox versuchen und sehen, ob ich es für die lokale Box arbeiten kann. – Crashmeister

+0

Siehe Erweiterung zu meinem Beitrag oben. Ich kann es nicht funktionieren, wenn Leerzeichen in einem der Postfachnamen vorhanden sind. – Crashmeister

+0

Ihr Code funktioniert auf meinem Computer ('macOS Sierra', ** Version 10.12.6 **). Sorry, ich kann dir nicht helfen. – jackjr300

Verwandte Themen