Created
April 3, 2014 14:14
-
-
Save benwaldie/9955151 to your computer and use it in GitHub Desktop.
This script sends presenter notes from a Keynote 6.2 presentation to Evernote.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--============================== | |
-- Send Keynote Presenter Notes to Evernote | |
-- Version 1.0.1 | |
-- Written By: Ben Waldie <[email protected]> | |
-- http://www.automatedworkflows.com | |
-- Version 1.0.0 - Initial release | |
-- Version 1.0.1 - Updated for Keynote 6.2 compatibility | |
--============================== | |
-- Make sure a presentation is opened in Keynote. If not, notify the user and stop. | |
tell application "Keynote" | |
if (front document exists) = false then | |
display alert "Unable to proceed." message "Please open a presentation in Keynote." | |
return | |
end if | |
set extractBody to button returned of (display alert "Would you like to extract slide content too?" buttons {"Yes", "No"}) = "Yes" | |
-- Target the front presentation. | |
tell front document | |
-- Get the name of the presentation. | |
set thePresentationName to name | |
-- Retrieve the titles of all slides. | |
set theTitles to object text of default title item of every slide | |
-- If specified, retrieve the body text of all slides | |
if extractBody = true then | |
set theBodyText to object text of default body item of every slide | |
end if | |
-- Retrieve the presenter notes for all slides. | |
set theNotes to presenter notes of every slide | |
end tell | |
end tell | |
-- Prepare the notes as HTML. | |
set theFormattedNotes to "<html><body><h1>" & "Keynote Presentation: " & thePresentationName & "</h1>" & return | |
repeat with a from 1 to length of theTitles | |
set theFormattedNotes to theFormattedNotes & "<h2>Slide #" & a & "</h2>" & return | |
set theFormattedNotes to theFormattedNotes & "<b>Title: " & item a of theTitles & "</b>" & return & return | |
if extractBody = true then | |
set theFormattedNotes to theFormattedNotes & "<b>Body:</b> " & item a of theBodyText & return & return | |
end if | |
set theFormattedNotes to theFormattedNotes & "<b>Presenter Notes:</b> " & item a of theNotes & return & return | |
end repeat | |
set theFormattedNotes to theFormattedNotes & "</body></html>" | |
-- Replace any returns with line breaks. | |
set AppleScript's text item delimiters to {return, ASCII character 10} | |
set theFormattedNotes to text items of theFormattedNotes | |
set AppleScript's text item delimiters to "<br>" | |
set theFormattedNotes to theFormattedNotes as string | |
set AppleScript's text item delimiters to "" | |
-- Create the note in Evernote. | |
tell application "Evernote" | |
activate | |
set theNote to create note notebook "Inbox" title thePresentationName with html theFormattedNotes | |
open note window with theNote | |
end tell |
Actually, it would probably be easier to control TextEdit.app with AppleScript. I don't know AppleScript, but I shall attempt it. THANK YOU
Never mind, I figured it out. I have it saving everything to a Markdown file. THANK YOU
I get a syntax error: Expected end of line, etc. but found “text”.
This is for the line "set theTitles to object text of default title item of every slide"
Any thoughts?
Oh, blimey, help? I have been using a variation on this script to generate PDF handouts for my students. It's a lifesaver. But sadly this seems to have stopped working in Keynote 8.3 / OS10.14.2
The error I'm getting is "Keynote got an error: document 1 doesn’t understand the “exists” message.". Any pointers to how to find out what's changed?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Wow, this is the answer to my prayers. But instead of exporting to Keynote, could you advise how to export to a text file? If you need to reference an application, then MacVim? THANK YOU. This is great!