使用脚本自动执行任务 > 创建并编辑脚本 > 在 FileMaker Server 上运行脚本
 
在 FileMaker Server 上运行脚本
FileMaker Server 托管的文件中的脚本通常在客户端上运行。但是,您可以通过使用以下方式在服务器上运行脚本(服务器端脚本):
客户端上运行的脚本中的在服务器上执行脚本脚本步骤
FileMaker Server 计划(请参阅 FileMaker Server 帮助
脚本在 FileMaker Server 上运行有何不同
通过上述任一种方法启动的脚本由 FileMaker Server 的一个组件 FileMaker 脚本引擎 (FMSE) 运行。FMSE 是一个在服务器的不同会话中运行每个脚本的客户端。因此,服务器端脚本:
没有客户端的上下文(当前布局、搜索结果、排序顺序、记录、全局字段值和局部或全局变量值)
您可以使用“在服务器上执行脚本”脚本步骤中的脚本参数,向服务器端脚本传递客户端上下文的相关信息。服务器端脚本可以使用转到布局脚本步骤执行查找脚本步骤等脚本步骤中的该信息来执行要操作的布局和搜索结果。
支持多达一百万个字符的脚本参数和脚本结果
只有在以下两个条件都为真时,才能访问其他 FileMaker Pro 文件:
文件在同一个主机上
文件已由启动服务器端脚本的客户端打开,或在文件的“文件选项”对话框中指定的帐户名和密码进行设置
服务器端脚本运行的方式相同,与启动方式无关,除了以下方面:
使用“在服务器上执行脚本”脚本步骤的客户端可以等待脚本在服务器上完成,使用Get ( 脚本结果 ) 函数来捕获结果。
如果运行的脚本超过指定的时间限制,可以将 FileMaker Server 计划设置为中断。
处理不支持的脚本步骤
FMSE 支持很多脚本步骤。但是,尝试执行不支持的脚本步骤将返回错误 3(“命令不可用”),跳过不支持的步骤并继续到下一步。要处理不支持的步骤,您的脚本可以使用 If 脚本步骤:
Get ( 上一个错误 ) 函数 位于步骤之后,以检查该步骤是否不受支持,然后改为执行支持的步骤。例如,FMSE 不支持“打开文件”脚本步骤,因此在服务器上运行的以下脚本将跳过该步骤并在结果中返回“不支持”。
打开文件 ["发货单备份"]
If [Get ( 上一个错误 ) = 3]
退出脚本 [文本结果:"不支持"]
End If
Get ( 主机应用程序版本 ) 函数 位于其他步骤之前,以检查该脚本是否在 FileMaker Server 上运行,然后仅执行支持的步骤。例如:
If [LeftWords ( Get ( 主机应用程序版本 ) ; 1 ) = "服务器"]
# 继续执行 FMSE 支持的脚本步骤
End If
要查看 FMSE 支持哪些脚本步骤,请在 FileMaker Pro 中的脚本工作区中,打开一个脚本,单击 新建文件夹按钮,然后选择“服务器”。不支持的脚本步骤以不同颜色显示。您还可以参考脚本步骤参考中每个脚本步骤的“兼容性”表。
在服务器上运行脚本的原因
通过减少客户端和服务器之间的网络流量来提高性能
从较慢的客户端上卸载长时间运行的任务,使服务器更快
启用 FileMaker Go 客户端执行需要插件的任务,这在 FileMaker Server 上支持,但在 FileMaker Go 上不支持
对使用服务器的 DSNODBC 数据源使用“导入记录”或“执行 SQL 语句”脚本步骤
注释
如果记录被客户端锁定,则服务器端脚本将无法访问未提交的数据或更改这些记录的内容。
运行服务器端脚本将打开和关闭包含这些脚本的文件。因此,在该脚本开始时,会激活 OnFirstWindowOpen 脚本触发器,在脚本结束时激活 OnLastWindowClose。
服务器端脚本可以使用执行脚本脚本步骤来执行子脚本,只有在这些子脚本位于同一服务器的文件中且已经由该客户端打开时,这些脚本才可以在服务器上运行。
“在服务器上执行脚本”运行的脚本使用的帐户与客户端相同。FileMaker Server 计划运行的脚本使用该计划中指定的帐户(请参阅 FileMaker Server 帮助)。
脚本在客户端上运行时,服务器端脚本不能导致客户端显示 FileMaker 警报消息,因此服务器端脚本始终按照设置错误捕获脚本步骤设置为“打开”执行。在服务器端脚本中使用Get ( 上一个错误 ) 函数来处理错误条件。要帮助您解决问题,也会将错误写入 FileMaker Server 中的事件日志。
客户端无法中断服务器端脚本。但是,服务器端脚本可以中断,条件是:
服务器管理员停止脚本,它以单独的客户端显示,可以在 FileMaker Server 管理控制台中断开连接
运行的脚本超过启动它的 FileMaker Server 计划中指定的时间限制
该脚本遇到了未知的脚本步骤(请参阅允许用户异常中断脚本步骤
请参阅 FileMaker Server 帮助
在服务器端脚本中,与硬件相关的函数,比如 Get (系统 IP 地址),是从 FileMaker Server 的数据库服务器组件中返回信息,而不是客户端。