脚本可以执行像设置打印方向这样的简单任务,也可以执行像准备给每个客户端发送自定义邮件这样的复杂任务。
例如,您可以定义一套复杂的任务,为"客户端"数据库中上周进行购买的客户创建一封感谢邮件。脚本会根据每个客户撰写适合的电子邮件。该脚本会在发送消息前切换到预览模式并暂停,以便您可以查看其外观。单击"销售条目"布局上的按钮,启动整个任务。
您可以按以下方式生成脚本:从一个称为脚本步骤的 FileMaker Pro Advanced 命令列表中进行选择,指定必要的选项,然后按执行任务的正确顺序安排步骤。
脚本通常在客户端上运行,但是您可能希望在 FileMaker Server 或 FileMaker Cloud 产品上运行某些脚本来改进性能或者自动定期运行脚本。请参阅关于在 FileMaker Server 和 FileMaker Cloud 产品上运行脚本。
花费在计划脚本上的时间越多,脚本按您的需求完成的可能性就越大。在进行计划时,请回答下列问题:
•是否可以将任务分解为若干小任务?您可以为每个小任务定义子脚本,然后定义执行子脚本的脚本。设计和测试若干小脚本要比设计和测试一个复杂的脚本更为容易。您还可以在其他领域重复使用这些子脚本。(使用执行脚本脚本步骤执行其他脚本内部的子脚本。)
•在何种情况下应该运行什么脚本步骤?需要始终运行每个脚本步骤吗?某些脚本是否应该运行若干次,直到满足某个条件?脚本是否调用其他脚本和子脚本?可以按照多种不同方法来控制脚本进度。有关创建具有条件步骤脚本的更多信息,请参阅控制脚本步骤。
•想要让脚本在某个特定布局上运行?因为脚本是在文件级别下定义的,并且可以从任何布局调用,所以您应确保脚本可以在预期的布局中执行。使用转到布局脚本步骤更改布局。
•应该针对数据库中的所有记录、当前搜索结果、还是特定记录集执行脚本?(使用搜索结果脚本步骤仅包括希望在搜索结果中处理的记录。)
•您需要的所有数据是否在一个数据库文件中,如果不在一个文件中,脚本是否会在多个文件中执行?如果使用多个文件,脚本会打开哪些文件?应该在哪个文件中定义脚本?在大多数情况下,应该在处理数据的文件中定义脚本。具有多个文件的数据库解决方案可能需要在每个文件中有单独的脚本,这取决于尝试利用脚本执行的任务的复杂程度。
•脚本以哪条记录开始?例如,使用 Loop脚本步骤时,您必须决定循环是从第一条或最后一条记录、特定记录、还是搜索结果中的当前记录开始。(使用转到记录/请求/页面脚本步骤、转到相关记录脚本步骤或转到入口行脚本步骤指定起始记录。如果没有包括确定当前记录的导航脚本步骤,则在执行脚本时循环从当前记录开始。)
•要使用哪个窗口?脚本最初附加到一个特定窗口,该窗口可能在背景中。脚本保留在该窗口中,直到脚本化操作切换到另一个窗口为止。例如,使用选择窗口脚本步骤指定另一个窗口。如果指定的窗口不可用,则脚本将切换到文件的前台窗口。当您暂停一个脚本时,关联的窗口会变成前台窗口(如果它可用)。请参阅窗口脚本步骤。
•脚本是否应该在模式之间切换?脚本可以在浏览、查找、布局或预览模式中运行。在脚本执行任务前,请确保其处于正确的模式下。例如,使用进入浏览模式脚本步骤修改字段和记录中的数据,使用进入查找模式脚本步骤设置或执行查找请求。
注释 在布局模式下执行的脚本会在执行之前自动切换到浏览模式。
•脚本需要哪些字段和布局?某些步骤(如转到字段脚本步骤和插入文本脚本步骤)要求字段位于当前布局上,而其他步骤(如设置字段脚本步骤)则不要求。使用转到布局脚本步骤切换到具有脚本所要求字段的布局,或者将灰色区域上的字段放到布局的右侧以使字段可用于脚本步骤而不是用户。
•是否应该按特定顺序处理记录?在当前排序顺序、指定的排序顺序或未排序(按记录的创建顺序)之间选择。在处理记录前输入循环以正确对其进行排序时,使用对记录排序脚本步骤或取消记录排序脚本步骤。
•脚本应该如何在多个字段或记录中执行?(使用转到记录/请求/页面脚本步骤、Loop脚本步骤、Exit Loop If脚本步骤和 End Loop脚本步骤控制所处理的多个字段或记录)。
•脚本应该在何时结束?在所有脚本都已运行之后?在处理完所有记录后结束?(使用If脚本步骤、Else If脚本步骤、Else脚本步骤,在脚本满足指定条件时执行退出脚本脚本步骤等任务。)
•用户是否应该能在脚本运行时停止脚本?脚本是否包含当脚本完成过早时导致数据不完整或不正确的过程?使用允许用户异常中断脚本步骤来控制用户是否可停止脚本。
•如何测试脚本?使用暂停/继续脚本脚本步骤在脚本中的预定义位置暂停。保存数据库的副本,然后在数据库中定义并测试脚本以保留原始数据。
注释 您可以使用脚本调试器来测试脚本和解决相关问题。请参阅调试脚本。
•如何处理错误条件(如空的搜索结果)?可以使用 Get (上一个错误) 函数捕获 FileMaker Pro Advanced 报告的上一个错误条件。使用此函数和 If脚本步骤、Else If脚本步骤以及 Else脚本步骤创建脚本,对用户错误或意外结果做出合理地反应。要获得更大的控制,请使用设置错误捕获脚本步骤来禁止显示通常会在下列情况下显示的错误警告,然后使用显示自定义对话框脚本步骤。
•是否应该允许所有用户执行全部脚本?使用权限集控制用户对脚本的访问。通过使用权限集,用户可以执行或修改单个脚本或所有脚本,也可以不执行或修改任何脚本。还可以为以后在文件中定义的新脚本的每个权限集设置默认权限。设置脚本以完全访问权限运行将允许该脚本在用户所分配的权限通常不允许的情况下代表用户执行任务。请参阅创建和编辑权限集。
•用户如何执行脚本?您需要创建按钮来执行脚本,或指定要添加到"脚本"菜单中的脚本。脚本还可以从"脚本工作区"中运行,也可以在脚本触发器处于激活状态时运行。例如,可以在数据库打开时使用 OnFirstWindowOpen 脚本触发器运行脚本。
当您考虑过这些问题之后,便可以在数据库中管理脚本。请参阅创建并编辑脚本。