Skip to content

Instantly share code, notes, and snippets.

@lambdamusic
Last active May 10, 2024 15:38
Show Gist options
  • Save lambdamusic/e3c145fc1724cadc8c0120e20f2eef9f to your computer and use it in GitHub Desktop.
Save lambdamusic/e3c145fc1724cadc8c0120e20f2eef9f to your computer and use it in GitHub Desktop.
Apple Keynote: export presenter notes
-- HOWTO:
-- after saving it, open with Script Editor (default) and run it
-- PREREQUISITES:
-- make sure your Keynote presentation is open in the background
-- AFTER EXPORT:
-- if you can't open the file due to encoding errors, open with Sublime (or another a text editor) and then "File / Save with encoding / UTF8"
tell application "Keynote"
activate
-- open (choose file)
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
-- Retrieve the presenter notes for all slides.
set theNotes to presenter notes of every slide
end tell
end tell
set presenterNotes to ""
repeat with a from 1 to length of theTitles
-- skip slides with empty notes
if not (item a of theNotes) = "" then
set presenterNotes to presenterNotes & "#### Slide " & a & ": " & item a of theTitles & return & return
set presenterNotes to presenterNotes & "##### Presenter Notes: " & return & item a of theNotes & return & return
end if
end repeat
set the clipboard to presenterNotes
do shell script "pbpaste > ~/Desktop/keynote-notes-" & quoted form of thePresentationName & ".md"
-- based on http://apple.stackexchange.com/questions/136118/how-to-print-full-presenter-notes-without-slides-in-keynote
@RunsOnCoffee
Copy link

Great script. The last line which exports to a Markdown file should be changed, though... as written, if the presentation name has spaces, the script will terminate the name after the first word and not include the extension. @michaelzed notes this issue above. Changing the line to read as below will fix the problem:

do shell script "pbpaste > ~/Desktop/keynote-notes-" & quoted form of thePresentationName & ".md"

@lambdamusic
Copy link
Author

Thanks @frankrausch @RunsOnCoffee, last line updated

@efc
Copy link

efc commented Jun 5, 2022

Thanks for this script. It worked perfectly for me.

@lmerk567
Copy link

Worked so great; thanks very much!

(I couldn't figure out how to do that "save with encoding" process provided in the comments, so just created a blank new script in the Script Editor, and copied/pasted the code into that.)

@TravelingTartar
Copy link

TravelingTartar commented Jul 29, 2022

Does anyone get an error: "Keynote got an error: Can't get document 1."?
The Result I get is: error "Keynote got an error: Can’t get document 1." number -1728 from document 1"
edit
Never mind, figured it out. BITDEFENDER was blocking the document. Now works like a charm.

@EyeboneJoe
Copy link

Epic script to replace the older version, was having to back save keynotes to the 09 version until now. Pasted straight into script editor and it worked perfectly.

@alanzchen
Copy link

For anyone who doe not want "skipped" slides to appear in the export, here is a version that accounts for that:

https://gist.github.com/alanzchen/0313642a28cee06504baaedfaad5e73f

@DamienSchreurs
Copy link

Is there a way to exclude skipped slides?

Just add whose skipped is false at the end of the two lines that retrieve the titles and the presenter notes

set theTitles to object text of default title item of every slide whose skipped is false
set theNotes to presenter notes of every slide whose skipped is false

Or as seen in Script Editor
image

@mattsbennett
Copy link

Thank you, so useful

@jessamynwest
Copy link

Used it today with Keynote 14 and Ventura. Thanks again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment