Автоматизация рутины в OS X. Урок 2. Генерация слайдов для презентаций

Автоматизация рутины в OS X. Урок 2. Генерация слайдов для презентаций

Эта вторая часть цикла статей про автоматизацию рутины в OS X. В прошлой части мы научились использовать приложение «Терминал» для поточного конвертирования изображений из одного формата в другой. Сегодня настал черед ознакомиться с другим инструментом — Java Script Automation и его применением в связке с Keynote и Numbers.

Что мы научимся делать?

Автоматически создавать слайды для презентации на основе данных из электронной таблицы.

Куда писать автоматизирующий код?

  1. Открыть программу «Редактор скриптов» (Программы -> Утилиты).
    Снимок экрана 2015-10-10 в 21.02.41
  2. В верхнем меню выбрать  Файл -> Новый.Снимок экрана 2015-10-10 в 21.08.11

3. На переключателе языков выбрать Java Script.
Снимок экрана 2015-10-10 в 21.11.37

Как открыть презентацию для редактирования?

Снимок экрана 2015-10-13 в 18.00.27
Перед тем как добавлять в нее слайды, презентацию необходимо открыть. Это делается с помощью трех простых строчек кода:

// Создаем переменную для приложения Keynote
Keynote = Application("Keynote");
//Кладем в переменную путь к искомому файлу
var path = Path("/Users/irina/Desktop/example.key");
//Открываем файл в программе Keynote
var doc = Keynote.open(path);

Как изменить текст заголовка слайда?

Теперь можно производить различные манипуляции с открытой презентацией. Пока у нас есть только один слайд. Его индекс — 0. Вот код, который изменит текст в заголовке и теле слайда.

//Кладем в переменную первый слайд презентации
slide = doc.slides[0];
//Меняем текст заголовка
slide.defaultTitleItem().objectText="Новый текст заголовка";
//Меняем основной текст документа
slide.defaultBodyItem().objectText="Новый текст тела документа"

Как изменить размер и цвет шрифта в текстовом поле?

Снимок экрана 2015-10-13 в 18.07.46В предыдущем примере мы обращались к текстовым полям через объекты defaultBodyItem() и defaultTitleItem(). Ниже представлена альтернатива этому способу:

//Делаем шрифт у заголовка 50
doc.masterSlides[0].textItems[0].objectText.size="50";
//Делаем цвет текста у заголовка красным
doc.masterSlides[0].textItems[0].objectText.color="red";

Как добавить слайд в презентацию?

После того как мы настроили внешний вид первого слайда, его можно копировать, чтобы на его основе создавать новые слайды. Делается это с помощью метода duplicate():

doc.slides[0].duplicate();

Как вставить в презентацию данные из электронной таблицы?

Для примера создадим файл data.numbers и заполним первый лист таблицей с данными.
Снимок экрана 2015-10-13 в 17.41.52Теперь мы можем использовать эта таблицу, чтобы поместить информацию из нее на первый слайд:

//Создаем переменную для приложения Numbers
Numbers = Application("Numbers");
//Кладем в переменную путь к искомой таблице
var pathTable = Path("/Users/irina/Desktop/data.numbers");
//Открываем искомую таблицу в приложении Numbers
var docTable = Numbers.open(pathTable);
//Кладем в переменные первый лист и первую таблицу
var sheet = docTable.sheets[0];
var table = sheet.tables[0];
//Кладем в переменную первый слайд
slide = doc.slides[0];
//Присваиваем заголовку первого слайда значение ячейки A1
slide.defaultTitleItem().objectText=table.cells["A1"].value();
//Присваиваем основному текстовому полю значение ячейки B1
slide.defaultBodyItem().objectText=table.cells["B1"].value();

Снимок экрана 2015-10-13 в 18.15.53

Как заполнить несколько слайдов данными из электронной таблицы?

А теперь мы дошли до кульминации нашего урока. Дополним вышеописанный код элегантным циклом:

//Создаем переменную для приложения Numbers
Numbers = Application("Numbers");
// Кладем в переменную путь к электронной таблице с данными
var pathTable = Path("/Users/irina/Desktop/data.numbers");
//Открываем путь к искомой таблице
var docTable = Numbers.open(pathTable);
//Кладем в переменную первую таблицу первого листа
var sheet = docTable.sheets[0];
var table = sheet.tables[0];
//Запускаем цикл из пяти итераций
for (i=1;i<=5;i++)
{
  //Создаем новый слайд на основе первого слайда
  doc.slides[0].duplicate();
  //Кладем только что созданный слайд в переменную
  slide = doc.slides[i];
  //Присваиваем заголовку и телу документа значения ячеек соответствующих итерации цикла
 slide.defaultTitleItem().objectText=table.cells["A"+i].value();
 slide.defaultBodyItem().objectText=table.cells["B"+i].value();
}

Снимок экрана 2015-10-13 в 17.48.47

Как сохранить файл Keynote в формате понятном Windows?

В качестве бонуса дополним статью примером кода для автоматического преобразования презентации Keynote в нечто читаемое виндовыми компами. Для сохранения файла в формате Microsoft Office будем использовать метод export():

var pathPPT = Path("/Users/irina/Desktop/example.pptx");
doc.export({to: pathPPT, as: 'Microsoft PowerPoint'});

С помощью этого метода презентацию можно преобразовать в PDF, HTML, видео или папку с картинками.

Другие статьи серии «Автоматизация рутины в OS X»:

Урок 1. Пакетная обработка изображений


✅ Подписывайтесь на нас в Telegram, ВКонтакте, и Яндекс.Дзен.



Добавить комментарий