如何使用 JXA 在 Numbers (iWork) 中创建一个范围
How to make a range in Numbers (iWork) using JXA
我正在使用 JXA 来自动化使用 Numbers 应用程序的流程。我需要的是 select 一系列单元格以应用宽度,但 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 的)。
感谢您的帮助(任何 link 的文档或任何 IDE 都将不胜感激)。
这个 AppleScript:
tell application "Numbers"
tell table 1 of sheet 1 of document 1
set selection range to range "A2:A20"
end tell
end tell
实际上是将table的选择范围设置为table的名为"A2:A20"的范围。
这是等效的 JavaScript:
var Numbers = Application("Numbers")
var table = Numbers.documents[0].sheets[0].tables[0]
table.selectionRange = table.ranges["A2:A20"]
我正在使用 JXA 来自动化使用 Numbers 应用程序的流程。我需要的是 select 一系列单元格以应用宽度,但 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 的)。
感谢您的帮助(任何 link 的文档或任何 IDE 都将不胜感激)。
这个 AppleScript:
tell application "Numbers"
tell table 1 of sheet 1 of document 1
set selection range to range "A2:A20"
end tell
end tell
实际上是将table的选择范围设置为table的名为"A2:A20"的范围。
这是等效的 JavaScript:
var Numbers = Application("Numbers")
var table = Numbers.documents[0].sheets[0].tables[0]
table.selectionRange = table.ranges["A2:A20"]