Use Perform Script on Server inside Data API script

We recently had a client with a problem exporting data in a server side script. Since server scripts run blindly and we can't debug them, we check FileMaker's logs, enable script error logging and add calls for MBS("Trace") and MBS("Log"; ...) calls to log data to the log file from our MBS FileMaker Plugin.

We quickly noticed that the Export Records script step failed with error 3, which is command unavailable. After that I quickly looked though FileMaker's documentation and identified functions with limited Data API support:

Function Data API Server
Close Data File No Yes
Configure Machine Learning Model No Partial
Copy All Records/Requests No Yes
Copy Record/Request No Yes
Create Data File No Yes
Exit Application No Yes
Export Records No Partial
Get Data File Position No Yes
Get File Exists No Yes
Get File Size No Yes
Import Records No Partial
OnFirstWindowOpen No Yes
OnLastWindowClose Partial Yes
Open Data File No Yes
Print Setup No Partial
Read from Data File No Yes
Save Records as PDF Yes Partial
Set Data File Position No Yes
Show/Hide Toolbars No Yes
Write to Data File No Yes

As you see, there are plenty of functions, which are not supported for Data API, but are for normal server scripting. This table is based on Claris FileMaker 20.3 documentation, so it may be different for your version of FileMaker Server.

If you like to use a function like Export Records in your script, you may need to use Perform Script on Server to run the script in the server scripting process.

For our client, it looks like this:

They use FM Better Forms, where the user clicks a button. This button then performs the script in Data API engine. Since Export Records script step is not available, we have to trigger another script using Perform Script on Server. This script then goes to the right layout and record ID (passed as script parameter). Then the script does the Export script step and signals back the result.

Over time we hope Claris can support more script steps for Data API as the code should be there. MBS FileMaker Plugin can be used on all three engines on FileMaker Server: Server Scripting, Data API and Web Direct.