1

我目前正在编写一个要在 FileMaker 中运行的 applescript。我需要告诉 filemaker 其应用程序的名称是什么(FileMaker Pro 或 FileMaker Pro Advanced 或其他),以便我可以在 filemaker 内的另一个 applescript 中说“告诉应用程序 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)我还没有弄清楚如何让文件制作者接受这个首先返回值...

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

谢谢!

4

3 回答 3

2

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

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

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

于 2011-09-12T13:13:21.357 回答
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 中的数据直接写入正确的文件。

于 2010-01-26T07:18:32.600 回答
1

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

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

“告诉应用程序 Finder [您需要 Finder 做什么]”

这只是将通知定向到非 FMP 应用程序,但仍让您处于 FMP 中,因此您的 FMP 调用将起作用。

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

于 2010-08-03T20:42:39.253 回答