Je suis coincé en train d'écrire un script JXA en utilisant l'éditeur de script d'Apple. Essentiellement, je veux passer par mon dossier de boîte de réception et déplacer les messages plus vieux que 44 jours à un dossier d'archives. Je suis capable de trouver le compte, et ma boîte de réception et d'archiver les "boîtes aux lettres", mais je ne peux pas pour la vie de moi comprendre comment déplacer le message sacrément dans une nouvelle boîte aux lettres.JXA Déplacer un message vers un autre dossier/boîte aux lettres
Voici ce que j'ai jusqu'à présent:
var staleTime = 44;
var countMessages = 0;
var Mail = new Application("Mail")
var accounts = Mail.accounts();
var account;
var found = false;
for (i = 0; i < accounts.length && !found; ++i) {
if (accounts[i].name().indexOf("xchange") > -1) {
account = accounts[i];
found = true;
}
}
var mailboxes = account.mailboxes();
var inbox;
var archive;
for (i = 0; i < mailboxes.length; ++i) {
if(mailboxes[i].name().indexOf("nbox") > -1) {
inbox = mailboxes[i];
}
if(mailboxes[i].name().indexOf("rchive") > -1 &&
mailboxes[i].name().indexOf("CDE") == -1) {
archive = mailboxes[i];
}
}
// console.log("mailbox name is: " + inbox.name());
var messages = m inbox.messages();
var fortyFourDaysAgo = new Date();
fortyFourDaysAgo.setDate(fortyFourDaysAgo.getDate() - staleTime);
for (i = 0; i < messages.length; ++i) {
var dateSent = messages[i].dateSent();
if(dateSent < fortyFourDaysAgo) {
// now what???
}
}
Je peux voir dans l'aide de dictionnaire dans l'éditeur de script que l'objet du message a une propriété de boîte aux lettres, mais aucun des éléments suivants semblent fonctionner:
messages[i].mailbox = archive;
messages[i].mailbox(archive);
toute aide serait grandement appréciée.
Voici comment traduire cet extrait AppleScript en JXA: 'var cutoffDate = new Date (Date.now() - 44 * 60 * 60 * 24 * 1000); Application ("Mail"). Move (Application ("Mail"). Inbox.messages.whose ({dateSent: {'<': cutoffDate}}), {à: Application ("Mail"). Mailbox ["Archive" ]) '. – bacongravy
Pas vraiment joli, mais je suppose que l'on devrait être reconnaissant qu'il puisse l'exprimer du tout. BTW, il est préférable d'utiliser 'byName (...)', pas la notation de parenthèse, pour construire des spécificateurs par nom car JXA ne peut pas les distinguer de façon fiable des spécificateurs de propriété/éléments. (Contrairement à Python/Ruby/ObjC/etc, JS traite 'foo.bar' et' foo ['bar'] 'comme interchangeable.) Dans ce cas particulier, vous vous en tirerez, car les objets' mailbox' n'ont pas un attribut 'archive', mais l'utilisation de la méthode' byName' évite tout risque de trébucher les imprudents. – foo