PowerPoint Applescript菜单提供与AppleScript编辑器不同的结果

时间:2013-09-10 22:08:14

标签: applescript powerpoint

以下脚本在AppleScript编辑器中运行时,以文本形式返回页面上对象的自动形状类型。但是,从PowerPoint中的applescript菜单运行时,它会返回一个脚本常量。

我正在使用更复杂的版本将对象的属性发送到不同的应用程序,基于它的自动形状类型...表格去一个地方,占位符是另一个,矩形等等到第三个。我也是从PPT中推出这个来推出数据,而不能真正从其他任何应用程序中取出它,所以AppleScript菜单就是我想要它的地方。

有谁能告诉我为什么同一个脚本会给出两个结果?

谢谢, 亚历

tell application "Microsoft PowerPoint"
    set currentSlideNumber to slide index of slide range of selection of document window 1
    set theSlide to slide currentSlideNumber of active presentation
end tell

getProperty(theSlide)

to getProperty(theSlide)
    tell application "Microsoft PowerPoint"
        repeat with thisShape in (get every shape of theSlide)
          set shapeType to shape type of thisShape
          set shapeContent to content of text range of text frame of thisShape
          display alert (shapeType as string)
     end repeat
end tell

结束getProperty

1 个答案:

答案 0 :(得分:0)

将常量(或标准AppleScript不理解的应用程序属性)转换为文本很棘手。我的猜测是,当在powerpoint菜单中时,脚本更好地理解常量,因此你会看到它。

在任何情况下,我都有与Finder常量相同的问题,并决定使用if语句处理转换为文本。这是一个麻烦的解决方案,因为你必须考虑每个常数,但至少你知道它会正常发生。

这是一个例子。假设有一个形状常数“rect”代表一个矩形,而“circ”代表圆形。

注意:您可以使用实际属性的名称而不是代码中的常量。

to getProperty(theSlide)
    tell application "Microsoft PowerPoint"
        repeat with thisShape in (get every shape of theSlide)
            set shapeType to shape type of thisShape
            if shapeType is <<rect>> then
                set shapeTypeText to "rectangle"
            else if shapeType is <<circ>> then
                set shapeTypeText to "circle"
            end if

            set shapeContent to content of text range of text frame of thisShape

            display alert (shapeTypeText)
        end repeat
    end tell
end getProperty