applescriptosx-yosemitekeynote

Applescript w/Keynote. Accessing shapes within a slide


I have a templated Keynote file with some slides and all the slides each have 2 shapes in them. I want to be able to say something like, "hey give me shape 2 of slide 2". The purpose of this, is so that i can add text items directly to that shape. below is the code that I have right now.

I am using the latest Keynote 6.5.2 & Yosemite.

  tell application "Keynote"

        activate

        tell document 1

            set anniversary to "Anniversaries"
            set myShape to shape 2 of slide 2
            tell myShape 
                set thisTextItem to make new text item with properties {object text:anniversary}
                #log thisTextItem
                tell thisTextItem
                    set the size of its object text to 144
                    set the color of its object text to "blue"
                end tell

            end tell

        end tell

    end tell

I can tell slide 2 by itself and of course i get a big text item for slide 2 with text "Anniversaries" and colored blue but its only slide 2... not within shape 2 of slide 2.

With this code it gives me a pop up error when running the script:

Result:

error "Keynote got an error: Can’t make or move that element into that container." number -10024

what does this mean? do i not have access to shapes within slides?? Any help/info/examples of setting text within a shape that is within a slide would be beneficial. Thanks!


Solution

  • You can set the properties of the text in a shape, you can't insert a text item object in a shape.

    tell application "Keynote"
        tell document 1
            tell shape 2 of slide 2
                set object text to "Anniversaries"
                tell object text
                    set it's size to 44
                    set it's color to {0, 0, 65535} -- blue
                end tell
            end tell
        end tell
    end tell