Почему некоторые возвращаемые массивы ограничены в JXA (Javascript для автоматизации в macOS)
Я пытаюсь получить все свои контакты 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 ответ
Решение
Разница, конечно, между
Messages.buddies()
(вызов функции, возвращающей массив), и
Messages.buddies
(ссылка на объект друзей).
Вы должны быть в состоянии получить полный список идентификаторов, позвонив .id()
метод только один раз, прямо на .buddies
объект.
(() => {
'use strict';
const
Messages = Application("Messages"),
refBs = Messages.buddies;
return refBs.id();
})();