我正在使用JXA使用Numbers应用程序自动化流程。我需要的是选择一系列单元格来应用宽度,但JXA不允许我得到它们。
根据apple documentation我只需要在数组中使用make或push创建的对象,但任何一个都可以工作。这是我的代码和Automator错误:
选项1:
var Numbers = Application('Numbers');
Numbers.Range({name: 'A2:A20'}).make();
// -> Error: Can't make or move that element into that container
选项2:
var Numbers = Application('Numbers');
var myRange = Numbers.Range({name: 'A2:A20'});
Numbers.documents[0].sheets[0].tables[0].ranges.push(myRange);
// -> Error: Can't create object.
选项3:
var Numbers = Application('Numbers');
var myRange = Numbers.Range({name: 'A2:A20'});
Numbers.documents[0].sheets[0].tables[0].selectionRange = myRange;
// -> Automator close with an unexpected error
根据AppleScript文档(语法与Javascript非常不同)我可以分配代表范围的文本:
set selection range of table 1 to range "H5:K8"
但如果我用Javascript做类似的事情,它就不起作用了:
选项4:
var Numbers = Application('Numbers');
Numbers.documents[0].sheets[0].tables[0].selectionRange = 'A2:A20'
// -> Error: Can't convert types.
我已经搜索过了,但是我没有找到任何可以帮助我的东西(很好的参考资料是关于AppleScript的,而且很少有关于JXA的内容涉及Mail)。
感谢您的帮助(任何带有文档或任何想法的链接都将受到欢迎)。
答案 0 :(得分:4)
AppleScript:
tell application "Numbers"
tell table 1 of sheet 1 of document 1
set selection range to range "A2:A20"
end tell
end tell
实际上是将表格的选择范围设置为名为" A2:A20"的表格范围。
以下是等效的JavaScript:
var Numbers = Application("Numbers")
var table = Numbers.documents[0].sheets[0].tables[0]
table.selectionRange = table.ranges["A2:A20"]