我正在尝试使用JavaScript在Apple Mail中创建子邮箱。
我有以下代码段(parent是对我想要新邮箱的邮箱的引用):
var mb = mail.Mailbox({name: "SubFolder"});
parent.mailboxes.push(mb);
事件日志显示:
app = Application("Mail")
app.mailboxes.byName("Local").mailboxes.byName("Archive").mailboxes.push(app.Mailbox({"name":"SubFolder"}))
--> Error -10000: AppleEvent handler failed.
我做错了什么?
谢谢, 克雷格。
现在代码:
var mb = mail.Mailbox({name: "Local/Archive/Test Archive/SubFolder"})
logger.logDebug("mb = '" + Automation.getDisplayString(mb) + "'.");
mail.mailboxes.push(mb) // create the subfolder
只要路径中没有空格,这就可以工作。 我试图在它前面使用\\强制空间,但是然后你得到"测试\存档"正如名字一样。
那么如何让名字中的空格起作用呢?
感谢。
答案 0 :(得分:1)
要创建子文件夹,您需要一个类似posix路径的名称 - > "/theMasterMailbox/subMailBox1/subMailBox2/subMailBox3"
。
所以,你需要:
join('/')
将数组元素连接成字符串。mail.mailboxes.push(mb)
代替parent.mailboxes.push(mb)
这是一个示例脚本,用于在所选文件夹(邮箱)中创建名为“ SubFolder ”的邮箱:
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