我正尝试使用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()
,该方法行之有效,包括在此后分配两个属性label
和value
,但是行Contacts.add({ email, to: person })
失败,并出现错误“无法转换类型。 “
我对这应该如何工作感到很困惑。在这种特殊情况下,我找不到的(很少)JXA代码示例没有任何帮助。我以为我已经了解了该API应该如何工作的一些基本方面,但是我无法弄清楚,可用的小文档也没有帮助。有人知道这应该如何工作吗?
答案 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()
超出我的范围。