javascript - 使用 Javascript for Automation (JXA) 从 Apple Numbers 中的单元格选择中获取表名
问题描述
我正在尝试将此Applescript转换为用于自动化的 Javascript。
有没有人可以帮助在 Javascript for Automation 中编写下面这行代码?
set thisTable to the first table whose class of selection range is range
感谢任何帮助!
解决方案
这将需要使用一个whose
子句来查询所选工作表中表格的元素数组——本质上,您希望找到属性不是的所有Table
对象(这类似于断言其类是)。不幸的是,JXA 中似乎有一个错误阻止与. 因此,虽然最好简单地检查下面的代码,但我发现这种方法不起作用。相反,会出现以下内容(尽管不是特别优雅)来做您正在寻找的事情:selectionRange
null
range
null
_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 的错误状态,它可能是最好的方法。
延伸阅读:
推荐阅读
- firebase - SendGrid 与 Firebase 触发电子邮件的集成。错误:无效登录:535 身份验证失败
- facebook - Facebook API 获取两个人之间的对话线程
- spring-boot - Spring Data JPA 加入问题
- powershell - 任务未正常运行 - Windows Server 2019
- apache-kafka - BACnet 或 KNX 与 RabbitMQ 或 Kafka 的比较
- python - 熊猫按年份分组,列中出现次数?
- html - chrome浏览器切换设备工具栏的奇怪功能
- excel - 4行之间的Excel阴影
- javascript - javascript:正确加载外部库
- python - 诗歌:如何重新安装一个同名的轮子