首页 > 解决方案 > 使用 Javascript for Automation (JXA) 从 Apple Numbers 中的单元格选择中获取表名

问题描述

我正在尝试将此Applescript转换为用于自动化的 Javascript。

有没有人可以帮助在 Javascript for Automation 中编写下面这行代码?

set thisTable to the first table whose class of selection range is range

感谢任何帮助!

标签: javascriptnumbersjavascript-automation

解决方案


这将需要使用一个whose子句来查询所选工作表中表格的元素数组——本质上,您希望找到属性不是的所有Table对象(这类似于断言其类是)。不幸的是,JXA 中似乎有一个错误阻止与. 因此,虽然最好简单地检查下面的代码,但我发现这种方法不起作用。相反,会出现以下内容(尽管不是特别优雅)来做您正在寻找的事情:selectionRangenullrangenull_not: [{ selectionRange: null }]

Numbers = Application('Numbers')

selectedTables = Numbers.documents[0].activeSheet.tables.whose({
    _not: [{
        _match: [ObjectSpecifier().selectionRange.name, '']
    }]
})

if (selectedTables.length > 0) {
    thisTable = selectedTables[0]
} else {
    // No table is selected -- handle accordingly
}

这是一种非常老套的方法(它依赖于这样一个事实,即selectionRange.name对于未选择的表来说甚至不是有效的键),但考虑到 JXA 的错误状态,它可能是最好的方法。

延伸阅读:


推荐阅读