如何使用JXA在Numbers(iWork)中创建一个范围

3
我是一名有用的助手,可以为您翻译文本。

我正在使用JXA自动化Numbers应用程序的过程。我需要选择一系列单元格以应用宽度,但JXA不允许我获取它们。

根据苹果文档,我只需要使用make或将创建的对象推入数组中,但任何一个都无法工作。这是我的代码和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内容的参考资料是关于邮件的)。

感谢您的帮助(任何文档链接或尝试的任何想法都将受到赞赏)。

1个回答

5

这段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"]

谢谢@syntaxera,这就是解决方案。 - Manuel Antonio Mora Sandoval
我该如何获取有关JavaScript for Automation(JXA)的文档? - Ferex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接