使用JavaScript与AppleScript的MacOS联系人详细信息

时间:2018-08-18 18:30:10

标签: jxa

我正在尝试在Apple的Contacts.app中获取所选卡的所有电子邮件地址。无论哪种语言,我都可以将所选卡放入变量selPerson中。但是然后...

在AppleScript中,这有效:

<select class="js_select">
  <option value="">-- Select a Value --</option>
  <option value="0">test</option>
</select>
<br>
<select class="js_select">
  <option value="">-- Select a Value --</option>
  <option value="0">test</option>
</select>
<br>
<select class="js_select">
  <option value="">-- Select a Value --</option>
  <option value="0">test</option>
</select>

result是记录列表(每个存储的电子邮件地址一个),具有多个属性,例如id,label(如应用程序中所示)和value(实际地址)。很简单。

但是如何在JavaScript中获得相同的结果?

get the properties of every email of selPerson

返回一组电子邮件“引用”和

selPerson.emails()

给我一​​个对象,该对象具有数组中第一个对象的属性。但是我不知道该怎么做,就是将所有这些结合起来以产生所有电子邮件对象的数组,即每个电子邮件地址一个。

我最终使用array.map()将其合并,但这只是迭代电子邮件引用的第一个数组。并创建完整对象的第二个数组,但是必须有一种更好的方法。似乎有一种情况在AppleScript中要容易得多,尽管AS的其他功能不足意味着使用JS是更好的选择。无论如何,我想更多地了解JXA。

1 个答案:

答案 0 :(得分:0)

也许是这样的:

const
    person = matches.at(0),
    emails = person.emails;

return Array.from({
    length: emails.length
}, (_, i) => emails.at(i).properties());