使用JXA向新联系人添加电子邮件

时间:2018-12-08 11:32:16

标签: automation applescript jxa

我正尝试使用Java for Automation(JXA)创建联系人,但无法弄清楚如何向该联系人添加电子邮件地址。

这是添加联系人的代码:

Contacts = Application('Contacts')
person = Contacts.Person().make()
person.firstName = "Tom"
person.lastName = "Tester"
Contacts.save()

这按预期工作,i。 e。它会创建具有名字和姓氏的联系人。

然后我尝试添加此代码以向联系人添加电子邮件地址:

Contacts = Application('Contacts')
person = Contacts.Person().make()
person.firstName = "Tom"
person.lastName = "Tester"
email = Contacts.Email().make()
email.label = "Work"
email.value = "mail@test.de"
Contacts.add({ email, to: person })
Contacts.save()

email = Contacts.Email().make()行出现错误“无法将该元素移入该容器。”

我也尝试了email = Contacts.ContactInfo().make(),同样的错误。然后,我尝试了email = Contacts.Email(),该方法行之有效,包括在此后分配两个属性labelvalue,但是行Contacts.add({ email, to: person })失败,并出现错误“无法转换类型。 “

我对这应该如何工作感到很困惑。在这种特殊情况下,我找不到的(很少)JXA代码示例没有任何帮助。我以为我已经了解了该API应该如何工作的一些基本方面,但是我无法弄清楚,可用的小文档也没有帮助。有人知道这应该如何工作吗?

1 个答案:

答案 0 :(得分:0)

通过反复试验找到了答案,,这要归功于Apple的文档:

Contacts = Application('Contacts')
person = Contacts.Person().make()
person.firstName = "Tom"
person.lastName = "Tester"
email = Contacts.Email({ label: "Work", value: "mail@test.de" })
person.emails.push(email)
Contacts.save()

所以我猜想“诀窍”是创建Email类的对象,而使用make()创建对象。为什么在创建Person时而不是在创建其他任何东西时必须使用make()超出我的范围。