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

PowerPoint Applescript菜单提供与Applescript编辑器不同的结果,applescript,powerpoint,Applescript,Powerpoint,以下脚本在AppleScript编辑器中运行时,将以文本形式返回页面上对象的自选图形类型。但是,当从PowerPoint中的applescript菜单运行时,它会返回一个脚本常量 我正在使用一个更复杂的版本,根据自动形状类型将对象的属性发送到不同的应用程序。。。表格放在一个位置,占位符放在另一个位置,矩形等放在第三个位置。我还从PPT内部发布了这个程序来推送数据,但实际上无法从任何其他应用程序中提取数据,因此AppleScript菜单将是我想要的 有人能告诉我为什么同一个脚本会产生两个结果吗 谢

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

我正在使用一个更复杂的版本,根据自动形状类型将对象的属性发送到不同的应用程序。。。表格放在一个位置,占位符放在另一个位置,矩形等放在第三个位置。我还从PPT内部发布了这个程序来推送数据,但实际上无法从任何其他应用程序中提取数据,因此AppleScript菜单将是我想要的

有人能告诉我为什么同一个脚本会产生两个结果吗

谢谢, 亚历克斯

end getProperty将常量(或标准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
到getProperty(滑动)
告诉应用程序“Microsoft PowerPoint”
在中重复此形状(获取滑块的每个形状)
将shapeType设置为此形状的形状类型
如果shapeType是
将shapeTypeText设置为“矩形”
否则,如果shapeType为
将shapeTypeText设置为“圆形”
如果结束
将shapeContent设置为此形状的文本框的文本范围的内容
显示警报(ShapeType文本)
结束重复
结束语
end getProperty

不幸的是,称为脚本的PPT在警报中显示“常量****å”,而不管对象的形状类型是表格、矩形、文本框还是梯形。你的剧本成功了吗?当我试图保存它时,除非我添加引号,否则它不会编译。这只是一个示例来向您展示这个想法。这是你需要放置常数的地方。我实际上并没有尝试脚本。这个想法很重要。然后你接受这个想法,让它发挥作用。您需要在powerpoint的applescript字典中查找可能的形状类型。
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