Добавление электронной почты для нового контакта с JXA - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь создать контакт, используя Javascript for Automation (JXA), но мне не удалось выяснить, как добавить адрес электронной почты к контакту.

Это код для добавленияконтакт:

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

Это работает, как и ожидалось, то есть создает контакт с именем и фамилией.

Затем я попытался добавить этот код, чтобы добавить адрес электронной почты для контакта:

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 }) завершается с ошибкой «Невозможно преобразовать типы».

IЯ в значительной степени озадачен тем, как это должно работать.Ни один из (очень немногих) примеров кода JXA, которые я смог найти, не помог в этом конкретном случае.Я предполагаю, что у меня есть какой-то фундаментальный аспект того, как этот API должен работать неправильно, но я просто не могу понять это, и небольшая доступная документация тоже не помогла.Кто-нибудь знает, как это должно работать?

1 Ответ

0 голосов
/ 08 декабря 2018

Обнаружил ответ методом проб и ошибок, нет благодаря документации 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().Почему вы должны использовать make() при создании Личности, а не при создании чего-то другого, не по мне.

...