AppleScript和FileMaker之间的通信

时间:2010-01-20 21:32:32

标签: macos applescript filemaker

我目前正在编写一个要在FileMaker中运行的AppleScript。我需要告诉filemaker它的应用程序的名称是什么(FileMaker Pro或FileMaker Pro Advanced或其他),以便我可以在filemaker中的另一个AppleScript中说“tell application filemaker”

我目前有一个脚本可以找出应用程序文件的名称,但问题是将其重新置于filemaker中。我想发回的名字是在AppleScript变量“FMName”中,我可以想到2个选项

1)

tell application FMName
   set cell "gFMName" of current record to FMName
end tell

这个问题是,尽管我知道应用程序FMName将有一个set cell命令,但是applescript没有,所以抱怨。

2)让applescript返回一个值或一条错误消息,并以某种方式让FileMaker接受这个并做一些有用的事情。

这个问题是1)看起来Applescripts只能返回数字(这是真的吗?)2)我不想要错误对话框或任何东西,3)我还没弄明白如何获取filemaker首先接受这个回报值......

对于如何做到这一点,任何人都有更好的想法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

因为(如果我理解你的话)无论应用程序是什么目标,它都是FileMaker的一个版本,无论是FileMaker Pro还是FileMaker Pro Advanced,甚至是FileMaker的运行时版本,使用的字典都会有相同的可用条款。因此,您可以使用using terms from application "FileMaker Pro"括起要执行的块。

using terms from application "FileMaker Pro"
    tell application FMName
        set cell "gFMName" of current record to FMName
    end tell
end using terms from

我还没有尝试过,所以我不确定它是否会起作用。您的目标似乎是让一个FileMaker应用程序从另一个FileMaker应用程序中的AppleScript接收数据。但是,我确实想知道为什么你要使用两个FileMaker应用程序。它们是不同的版本(即FileMaker 10和FileMaker 6)吗?如果是这样,可能让AppleScript将数据写入第二个FileMaker应用程序随后导入的文件是一个选项。但如果它们都是FileMaker 7-10,为什么不简单地在同一个应用程序中打开这两个文件?然后,您可以将AppleScript中的数据直接写入正确的文件。

答案 1 :(得分:1)

这个问题得到了解答,但我会添加一些我最近发现的东西。 如果您使用“Tell application Finder Activate”定位另一个应用程序,比如Finder,那么这些FMP调用将失败,因为您现在在Finder中,直到您执行“End Tell”或明确指向FMP。

向我指出的解决方案是在一行中进行外线呼叫,例如

“告诉应用程序查找器[你需要Finder做什么]”

这只是告诉非FMP应用程序,但仍然是IN FMP,因此您的FMP调用将起作用。

这成为运行时的问题,因为运行时名称将与您的开发应用程序名称不同。

答案 2 :(得分:1)

我知道这个帖子现在有点陈旧,但这就是我的工作 - 使用if语句。使用Get(ApplicationVersion)函数找出正在运行的FileMaker类型:

If ( PatternCount ( Get ( ApplicationVersion ) ; "Advanced" ) ; 
"tell application \"FileMaker Pro Advanced\""   ; 
"tell application \"FileMaker Pro\""  )

我已经更进了一步并将其设置为自定义函数,因此我没有在许多不同的脚本中重复它。