Автоматизация рутины в OS X. Урок 2. Генерация слайдов для презентаций
Эта вторая часть цикла статей про автоматизацию рутины в OS X. В прошлой части мы научились использовать приложение «Терминал» для поточного конвертирования изображений из одного формата в другой. Сегодня настал черед ознакомиться с другим инструментом — Java Script Automation и его применением в связке с Keynote и Numbers.
Что мы научимся делать?
Автоматически создавать слайды для презентации на основе данных из электронной таблицы.
Куда писать автоматизирующий код?
3. На переключателе языков выбрать Java Script.
Как открыть презентацию для редактирования?
Перед тем как добавлять в нее слайды, презентацию необходимо открыть. Это делается с помощью трех простых строчек кода:
// Создаем переменную для приложения 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="Новый текст тела документа"
Как изменить размер и цвет шрифта в текстовом поле?
В предыдущем примере мы обращались к текстовым полям через объекты 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 и заполним первый лист таблицей с данными.
Теперь мы можем использовать эта таблицу, чтобы поместить информацию из нее на первый слайд:
//Создаем переменную для приложения 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();
Как заполнить несколько слайдов данными из электронной таблицы?
А теперь мы дошли до кульминации нашего урока. Дополним вышеописанный код элегантным циклом:
//Создаем переменную для приложения 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(); }
Как сохранить файл 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, ВКонтакте, и Яндекс.Дзен.