Как сделать диапазон в Numbers (iWork) с помощью JXA

Я использую JXA для автоматизации процесса с помощью приложения Numbers. Мне нужно выбрать диапазон ячеек для применения ширины, но JXA не позволяет мне их получить.

Согласно документация Apple Мне нужно только использовать 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, относятся к Mail).

Спасибо за вашу помощь (любая ссылка с документацией или любые идеи, которые можно попробовать, будут оценены).


person Manuel Antonio Mora Sandoval    schedule 08.06.2015    source источник


Ответы (1)


Этот 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"]
person syntaxera    schedule 12.06.2015
comment
Спасибо @syntaxera, это решение - person Manuel Antonio Mora Sandoval; 12.06.2015
comment
Как получить документацию по Javascript для автоматизации (JXA)? - person Ferex; 02.12.2018