Переходим на новый уровень взаимодействия с OS X.
Эта статья об автоматизации решения следующих задач:
Пакетный экспорт презентаций в PDF/HTML/Power Point;
Извлечение данных из презентаций;
Создание презентации из электронной таблицы;
Создание презентации из группы картинок;
Изменение оформления нескольких презентаций одновременно.
Есть два способа извлечь пользу из этого материала:
Скопировать готовый код, прочитать краткую инструкцию и пользоваться им;
Дочитать статью до конца, узнать как устроено приложение и изучить множество полезных приемов создания автоматизаций под Mac на JavaScript. Эти знания помогут переделать «под себя» код из статьи или создавать свои собственные скрипты.
Краткая инструкция
1. Берем Mac с операционной системой OS X Yosemite или OS X El Capitain;
2. Запускаем Keynote;
3. Открываем Программы -> Утилиты -> Редактор скриптов;
4. Копируем туда код c этой страницы:
5. Нажимаем на черный треугольник, чтобы выполнить его:
Дальнейшие действия зависят от поставленной задачи.
Экспорт презентаций
Когда бывает нужно: если надо по-быстрому выложить несколько презентаций на сайт в виде html-страничек, послать их по почте приятелям с Windows (во избежании вопросов: «А это что еще за key-файлы?») или сохранить в PDF, чтобы смотреть в iBooks.
1. Выбираем пункт меню Экспортировать презентации и нажимаем ОК:
2. Выбираем один или несколько файлов для экспорта:
3. Выбираем один или несколько форматов экспорта:
4. Если появилось такое окно, значит все готово (надо нажать ОК):
5. Смотрим результаты экспорта на iCloud Drive в папке Keynote:
Извлечение данных
Когда бывает нужно: когда какая-то какая то полезная информация в интернете существует только в виде презентации или когда коллега сделал презентацию в таком жутком виде, что ее надо полностью переделать, а текстовое содержимое сочинялось по ходу создания и переписывать его/копировать руками времени нет.
1. Выбираем пункт меню Экспортировать презентации и нажимаем ОК:
2. Выбираем один или несколько файлов, из которых будем извлекать данные:
3. Дожидаемся появления индикатора готовности:
4. На iCloud Drive в папке TextEdit находим файл с данными:
Создание презентации из электронной таблицы
Когда бывает нужно: когда есть необходимость или желание сократить на треть время создании презентации.
Программы для создания презентации, включая Keynote, очень неудобны для ввода текста. Много времени тратиться впустую на переходы между слайдами и переключение активных зон. Чтобы ускорить процесс создания слайдов, можно набрать их содержимое в текстовом редакторе, скопировать в Numbers и скриптом сгенерировать презентацию.
1. Перед запуском скрипта следует создать электронную таблицу. В ячейки первого столбца поместить заголовки слайдов, а в ячейки второго основной текст:
Сохранить таблицу следует в папку Numbers на iCloud Drive.
2. Запускаем скрипт, выбираем пункт меню Создать презентацию из файла и нажимаем ОК:
3. Выбираем электронную таблицу с данными для создания презентации:
4. Выбираем файл-шаблон для презентации:
5. Указываем, сколько строк файла надо использовать для создания слайдов презентации:
6. Указываем имя для сохранения новой презентации:
7. Дожидаемся появления индикатора готовности:
8. Ищем новую презентацию на iCloud Drive и смотрим, что получилось:
Создание презентации из картинок
Когда бывает нужно: когда есть папка со схемами/графиками/фотографиями, а сил вставлять их в презентацию по одной нет. Примечание: Как мгновенно сохранить все графики из электронной таблицы в картинки будет рассказано в одной из следующих статей.
1. Запускаем скрипт, выбираем пункт меню Создать презентацию из картинок и нажимаем ОК:
2. Выбираем картинки:
3. Указываем имя новой презентации:
4. Дожидаемся появления индикатора готовности:
5. Ищем результат на iCloud Drive:
Изменение оформления презентации
Когда бывает нужно: когда перед конференцией неожиданно обнаружилось, что у слайдов ко всем докладам мелкий шрифт.
1. Запускаем скрипт, выбираем пункт меню Изменить оформление презентации и нажимаем ОК:
2. Выбираем одну или несколько презентаций для редактирования:
3. Выбираем часть презентации, которую будем редактировать:
4. Выбираем цвет текста:
5. Указываем размер шрифта:
6. Указываем угол поворота текста:
7. Дожидаемся появления индикатора готовности:
8. Смотрим обработанный файл:
Кстати, отличная первоапрельская шутка: пока коллега вышла на чай, взять все ее презентации и перевернуть в них вверх дном текст заголовков.
А теперь перейдем к подробному разбору кода.
Меню с выбором функции
// Сокращаем обращение к приложению, чтобы дальнейший код было легче читать Keynote = Application("Keynote"); // Включаем возможность использования UI-элементов Keynote.includeStandardAdditions = true; // Отображаем listbox с выбором действия currentAction=Keynote.chooseFromList(["Экспортировать презентации","Извлечь данные из презентаций", "Создать презентацию из файла", "Создать презентацию из картинок","Изменить оформление презентаций"],{withPrompt:"Что надо сделать?"}); // В зависимости от выбранного действия запускаем нужную функцию if(currentAction=="Экспортировать презентации") { exportKeynote(); } if(currentAction=="Извлечь данные из презентаций") { extractKeynote(); } if(currentAction=="Создать презентацию из файла") { createKeynote(); } if(currentAction=="Создать презентацию из картинок") { createKeynoteFromImages() } if(currentAction=="Изменить оформление презентаций") { editKeynote() }
Начинается выполнение скрипта с выпадающего списка для выбора нужного действия, которые создается с помощью метода chooseFromList. Иногда, при использовании этого метода возникает такая ошибка:
Чтобы ее не возникало, необходимо перед запуском скрипта запускать Keynote, как это сказано в краткой инструкции.
Обратите внимание также на эту строчку:
Keynote.includeStandardAdditions = true;
Перед тем как использовать элементы графического интерфейса в любом приложении (Keynote, Pages, Mail и т.д.), необходимо включить для него доступ к стандартным расширениям.
Экспорт презентаций
function exportKeynote() { // Отображаем панель Finder для выбора файлов с презентациями pathKeynote=Keynote.chooseFile({withPrompt:"Какие презетации нужно конвертировать?", multipleSelectionsAllowed:true}); // Отображаем listbox с выбором форматов для экспорта listFormats=new Array(); listFormats=Keynote.chooseFromList(["PDF","Microsoft PowerPoint","HTML"],{withPrompt:"В какие форматы нужно конвертировать?", multipleSelectionsAllowed:true}); // Объявляем служебный массив с расширениями, соответствующими каждому формату var extensions=new Array(); extensions['PDF']=".pdf"; extensions['HTML']=".html"; extensions['Microsoft PowerPoint']=".pptx"; // Открываем выбранные файлы с презентациями var sourceKeynote =Keynote.open(pathKeynote); // Перебираем все файлы for(i=0;i