Lock every object across entire keynote deck using applescript

applescriptkeynote

I'm trying to use an applescript to lock every object across every slide of a keynote deck, with only partial success. I've provided the code I'm using below. So far it works, but it seems to skip any objects that are grouped. Is there any way I can tell the script to also include grouped objects?

tell application "Keynote"
    tell document 1
        tell every text item of every slide
            set locked to true
        end tell
        tell every shape of every slide
            set locked to true
        end tell
        tell every image of every slide
            set locked to true
        end tell
        tell every movie of every slide
            set locked to true
        end tell
        tell every line of every slide
            set locked to true
        end tell
        tell every item of every slide
            set locked to true
        end tell
    end tell
end tell

The intention is make it so that the content of every slide is locked, with the exception of the presenter notes. I'm not even sure if this can be done, so I'd appreciate any help on this. Thanks in advance!

Best Answer

If you look at the Keynote AppleScript Dictionary you will see that the "group" element has no property for the boolean "locked". It seems that the only things that can be locked are the individual elements of the slide, but not a group on the slide, nor the slide itself.

If you can, I'd suggest going through and ungrouping the groups in your slide, re-run your script to lock all of the individual elements on each slide, then go back and group them again (If you can group locked items, which I do not know). Depending on how or why the elements are grouped, this might have a negative visual impact on the group itself (They might not look right).

I would have posted this as just a comment, but Stack Exchange won't let me comment yet. So here is your "Answer", not that it solves your problem.