我目前正在编写一个要在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首先接受这个回报值......
对于如何做到这一点,任何人都有更好的想法吗?
谢谢!
答案 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\"" )
我已经更进了一步并将其设置为自定义函数,因此我没有在许多不同的脚本中重复它。