为什么一些返回的数组在JXA(macOS中用于自动化的Javascript)中受到限制

为什么一些返回的数组在JXA(macOS中用于自动化的Javascript)中受到限制,javascript,arrays,javascript-automation,Javascript,Arrays,Javascript Automation,我尝试通过JXA脚本从应用程序“消息”获取我的所有iMessage联系人。 当我将数组分配给变量时,我只能处理前40个对象。但是这个数组的长度是147 var Messages = Application("Messages") var buddies = Messages.buddies() console.log(buddies.length) // == 147 当我转到脚本编辑器底部的“回复”选项卡时,我可以看到所有147个好友: app.buddies() --> [

我尝试通过JXA脚本从应用程序“消息”获取我的所有iMessage联系人。 当我将数组分配给变量时,我只能处理前40个对象。但是这个数组的长度是147

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

console.log(buddies.length) // == 147
当我转到脚本编辑器底部的“回复”选项卡时,我可以看到所有147个好友:

app.buddies()
    --> [app.buddies.byId(...), ...]
但是当我尝试处理索引大于39的数组中的对象时,我得到一个错误-1728(未找到对象),例如

怎么了?
获取所有好友ID的正确方法是什么?

当然,在

Messages.buddies()

(返回数组的函数调用),以及

消息。好友

(对buddies对象的引用)

通过直接在
.buddies
对象上调用
.id()
方法一次,您应该能够获得完整的id列表

(() => {
    'use strict';

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

    return refBs.id();

})();

就这样!非常感谢你!
(() => {
    'use strict';

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

    return refBs.id();

})();