Почему некоторые возвращаемые массивы ограничены в JXA (Javascript для автоматизации в macOS) - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь получить все свои контакты iMessage из приложения «Сообщения» через JXA-скриптинг.Когда я назначаю массив переменной, я могу работать только с первыми 40 объектами.Но массив имеет длину 147.

var Messages = Application("Messages")
var buddies = Messages.buddies()

console.log(buddies.length) // == 147

Когда я перехожу на вкладку "ответы" в нижней части редактора сценариев, я вижу все 147 друзей:

app.buddies()
    --> [app.buddies.byId(...), ...]

Но когда я пытаюсь работать с объектом из массива с индексом больше 39, я получаю ошибку -1728 (объект не найден), например

console.log(buddies[45].id())

Что не так?И как правильно получить идентификаторы всех друзей?

1 Ответ

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

Разница, конечно, существует между

Messages.buddies()

(вызов функции, возвращающей массив) и

Messages.buddies

(ссылка на объект buddies).

Вы можете получить полный список идентификаторов, вызвав метод .id() один раз, непосредственно для объекта .buddies.

(() => {
    'use strict';

    const
        Messages = Application("Messages"),
        refBs = Messages.buddies;

    return refBs.id();

})();
...