Applescript在FMP12中以原生方式工作,但未按计算方式工作。为什么?

时间:2015-01-16 00:41:14

标签: applescript filemaker quicktime

为什么这个功能可以从按钮中完美地调用为" NATIVE APPLESCRIPT"

set film to (choose file with prompt "Choose input file.")'s POSIX path
set frame_number to 606 --- *this is an example frame_number*

set fps to 25

tell application id "com.apple.quicktimeplayer" -- QuickTime Player 7

    tell (open film as POSIX file)

        set current time to frame_number / fps * time scale

    end tell

end tell

并提供此错误:Can’t make time scale into type number.

我的修改如下

Let ( mac_path = Right ( Substitute ( ClipsWork::Media Path; "/"; ":"); Length (ClipsWork::Media Path) - 1); 

"set frame_number to " & ClipsWork::FPS_D & ¶ & 
"set fps to 25"  & ¶ & 

"tell application \"Quicktime 7\"" & ¶ & 
    "activate" & ¶ & 

    "open " & Quote ( mac_path ) & ¶ & 

    "set current time to frame_number "  & ¶ & 

    "set the dimensions of movie 1 to {480, 270}" & ¶ & 

"end tell"

)

我做错了什么?

此致

3 个答案:

答案 0 :(得分:0)

我可以看到两个提取物都在做同样的事情,但它们略有不同。最简单的检查是将第二次提取粘贴到数据查看器中。

区别在于:

set current time to frame_number / fps * time scale

VS

"set current time to frame_number "  & ¶ & 

缺少fps变量的除法和时间尺度的乘法。

查看错误消息,听起来时间刻度的数据类型不正确。

答案 1 :(得分:0)

感谢关注我的帖子:

该脚本现在可以“随机”作为Snow Leopard和Mavericks中的计算脚本工作。

有了一些帮助(我是Applescript的新手)。 这是脚本:

Let (
    mac_path = Right ( Substitute ( ClipsWork::Media Path; "/"; ":"); Length (ClipsWork::Media Path) - 1)
;
    "set frame_number to "  & ClipsWork::FPS_D & ¶ &
    "tell application \"QuickTime Player 7\"" & ¶ &
        "activate" & ¶ &
        "tell (open " & Quote ( mac_path ) & ")" & ¶ &
            "set current time to frame_number / 25 * time scale" & ¶ &
            "set dimensions to {480, 270}" & ¶ &
        "end tell" & ¶ &
    "end tell"
)

我被建议在调用Quicktime之后添加另一个“tell”指令,所以现在它可以工作。

然而,该脚本会“随机”发出各种错误,尤其是在工作几个小时之后。好像缓存填满导致错误。我只在互联网上下载这个应用程序...

这在小牛队更常见。我得到的错误是在Path数据上。它包含“:”符号,因此错误总是“无法获取”:“在标识符之后”。

FMP12在脚本计算中添加表名和字段,表格包括“:”。

如何解决这个问题超出了我的理解......如果有人有关于欺骗FMP12的想法,请告诉我。

这是FMP12数据库中的数据;

在相同的布局中,我有这些数据的字段:

ClipsWork::Media Path

返回此文字:/Volumes/Exodo/Film_30_XI_12 XII/Whole_Files/Action_Proxy/MVI_3571.MOV

ClipsWork::FPS_D

返回此帧编号:1458

我只有一张桌子但仍然是结果。

谢谢

答案 2 :(得分:0)

我必须承认,每当我在FileMaker中使用AppleScript时,我从未使用过计算过的脚本。相反,为了从一个到另一个获取信息,我在FileMaker中设置全局字段,然后使用AppleScript获取全局字段的内容。因此,我创建此解决方案,将使用脚本步骤将全局字段设置为正确的路径(Set Field[g_applescript_parameter]; "your calc"]),然后是Perform AppleScript,如下所示:

tell current record to set mac_path to cell "g_applescript_parameter"
...
tell application id "com.apple.quicktimeplayer" to open file mac_path

这样做的一个主要优点是,在Apple的脚本编辑器中对脚本中的错误进行故障排除要容易得多(在Script Debugger中更容易)。一旦你在那里工作,复制和粘贴将其带入FileMaker而不进行修改(除非脚本编辑器需要删除tell application "FileMaker"块,脚本调试器可以让AppleScript命令以默认应用程序为目标)