FileMaker 10 Compatible

FileMaker plugin icon ScriptMaster is a free, general-purpose, modular plugin. It comes out of the box with modules for file manipulation, URL and network utilities, Web Services, shell scripting, event/script triggering, and many others.

What's new in ScriptMaster 3?

ScriptMaster 3 no longer requires you to install a plugin! Using 360Works' Auto Update server, the plugin will be automatically installed upon launch, making it even easier to integrate ScriptMaster and its modules into your own solution.

Version 3 includes the following new modules:

  • QuickTime Frame Capture - Capture a snapshot from an iSight camera or any other QuickTime-compatible video input
  • Create AES Secret Key - Generates a secure key that can be used with the next 2 functions
  • EncryptAES / DecryptAES - Uses the Rijndael AES encryption algorithm to encrypt data adhering to US Government standards to protect classified information
  • Crop Image - Crops an image to specified coordinates
  • Popup Menu - Takes a return-separated list of menu choices; returns the user's choice as the function result
  • Zip File - Creates a .zip archive of a file or directory
  • URLDecode - Compliments FileMaker's built-in GetAsURLEncoded function
  • List All Files Recursively - Lists all files in a directory, including subdirectories
  • Get File Size - Gets the size, in bytes, of a file on disk
  • Get File Modification Date - Gets the date that a file was modified
  • Better Random - Handles issues with FileMaker's built-in random number generator
  • Validate XML - Performs a syntax check on an XML text to see whether it is well-formed

We've focused on making ScriptMaster 3 easier to use than previous version. The new version includes re-written documentation and a video tutorial which makes it faster than ever for developers to get started with ScriptMaster and enhance their FileMaker functionality. We have also completely redesigned the user interface with help from Matt Petrowsky for a cleaner look and better navigation.

 


ScriptMaster integrates tightly with your FileMaker solution. You can pass in any number of inputs, receive any number of outputs, call FileMaker scripts, and access your FileMaker fields and calculations from any module.

In addition to the many existing modules that come free with ScriptMaster, 360Works is available to create custom modules suited to your specific needs. In addition, if you are familiar with Java, you can create your own expansion modules, although you do not need to know Java in order to use the many free modules that come with ScriptMaster.

There is a support forum dedicated to ScriptMaster at FmForums.com - that is the place to go to post any questions, tips, or new modules that you create with ScriptMaster.

The possibilities are truly limitless with what you can accomplish with this plugin.

Check out Matt Petrowsky's video article, Combining PDFs - The Blazing Fast Method, at FileMakerMagazine.com. The video demonstrates 360Works ScriptMaster plugin being used with iText to combine PDF files.


What does the FileMaker community think of ScriptMaster?

"It’s hard to believe that it’s FREE! This plugin, removes the need for dozens of other plugins. Go to the web page and watch the 10 minute video to get your mind blown.... The awesomeness of this is almost impossible for me to describe."—Jeremiah Small, Soliant Consulting
Read the full article here!

David Wheelock had this to say: "I just started to use ScriptMaster to produce 'slugs' for an advertising client. The slugs are small .png files, with client/project info, which get dropped onto project artwork. The client was super impressed. It was really a simple task with the help of ScriptMaster!"

"Guys, I'm a registered user of FTPeek and love it. I just downloaded ScriptMaster and wanted to say my mind is officially blown. Thank you all for such great work. You know, you guys are one of the only companies who seem to have precisely the same tech support ethos that we do... I got you guys on the phone once and was as impressed with service as I was with the product, and that's rare, so thank you for that as well." —Joshua Beckett

"Installation couldn't have been easier. Just drop the plugin into Filemaker's "Extensions" folder and it's ready to go! The Scriptmaster Examples database is well designed and easy to use. Many useful commands are demonstrated, and with some programming skills, there seems to be limitless possibilities. I'm currently not very familiar with Java, but that didn't matter. I'm working on converting a FMP database that uses Applescripts into an IWP-compatible solution. This was just the trick! ...Thanks 360Works!!!" —Don Aehl, Quad Graphics

"I'm also liking the fact that I no longer need to have the ScriptMaster database register functions, and that you have a server already configured to AutoUpdate the plugin for users - great idea!" —Karstyn McCoy, The Support Group

"As I said, this works really great! I just discovered the ScriptMaster plug-in, and I must say it's a very seducing little plug-in. Though I'm mostly minimalist when it comes to using plug-ins, and probably will continue being so, ScriptMaster does provide a very nice and enormously vast toolbox that allows you to give an extra little touch to make your work stand out from most other FileMaker databases." —David Wikström, CamelCase Data

"Fantastic plugin. Use it all the time!" —Christiaan L. van Minnen, INDEX Books

"Terrific app" —Robert Moran, Digital Constructs, Inc.

"Thanks for the quick fix and AMAZING plugin." —Salvador Sandoval

"Great plug-in; thanks for this gift to the FM community." —Ken Newell, Hamilton Glaucoma Center

"Are you sure this valuable plug in is free to deploy with my program? I feel like I am stealing something." —Jennifer Shook

 

 

Subscribe to our If you're a FileMaker developer or FileMaker consultant, subscribe to our RSS feed for informative articles and product updates. RSS feed for product update news!


Questions and Answers

Will it run on Windows/Mac? What version of FileMaker is required?

Yes, all of our plugins are designed to run on Mac OS X (PowerPC and Intel) as well as on Windows.

Runs in FileMaker as a Universal Binary applicationOur plugins take advantage of the plugin features of FileMaker 7 and later, such as attaching styles to text, and are compatible with the most recent version, FileMaker 10. In addition, the Mac versions of all of our plugins ship as universal binaries, and will run at full speed on both PowerPC and Intel Macs.

Mac OS X 10.4 or
later on PPC
Mac OS X 10.4 or
later on Intel
Windows XP or later
FileMaker 4-6 FileMaker Pro 7 or later required
FileMaker Pro 7 X Won't run in Rosetta X
FileMaker Pro 8 X Won't run in Rosetta X
FileMaker Pro 8.5 X X X
FileMaker Pro 9 X X X
FileMaker Pro 10 X X X
FileMaker Server Advanced 7 X X X
FileMaker Server Advanced 8.0v4 See note below See note below X
FileMaker Server Advanced 9 X X X
FileMaker Server 9 X X X
FileMaker Server 10 X X X
FileMaker Server Advanced 10 X X X

FileMaker Server Advanced 8.0v4: Unfortunately, a bug in FileMaker Server Advanced 8.0v4 disables all plugins in the Web Publishing Engine on OS X. This affects all plugins, not just ones from 360Works. FileMaker, Inc. is aware of this bug.

Rosetta: Rosetta is not supported. If you are running FileMaker 7 or 8 on an Intel Macintosh, we strongly recommend upgrading to FileMaker 8.5 or later; the speed and stability improvements are very significant.

What about Web Publishing and FileMaker Server?

If you purchase the Enterprise License (see below), then you will be able to use the plugin with the FileMaker Web Publishing Engine. This means that when you use our plugins in your FileMaker scripts, they will work the same way with Instant Web Publishing (IWP). It also means that your Custom Web Publishing applications (with XSLT, PHP, or any other web technology) can call FileMaker scripts that use our plugins.

If you're using FileMaker Server 9 or later, our plugins are compatible with the FileMaker Server scheduled script feature.

Can I use this plugin with my FileMaker runtime solution?

Yes, all of our plugins work in FileMaker runtimes solutions, just copy the plugin to the runtime's Extensions folder.

What kind of licenses are there?

Most of our plugins are available in 3 licenses: a Demo version which works for 2 hours every time you launch FileMaker, a "WorkGroup License" for 10 or fewer users, and an "Enterprise License" for unlimited users within a single organization.

There are more Questions and Answers on our product support site.

The following is a list of the utility functions which are included with ScriptMaster.

Containers

Crop ImageCrop an image starting from the x, y coordinates resulting in an image which is width x height pixels.

imageLocation can be a file location or a URL
Get File As ContainerThis reads the contents of a file (pathToFile) into a container field.

If the file does not exist, the path of the file is returned. Change the path to an existing image on your hard drive and run again.

Whenever your script returns a File object, it is converted to container data.



Since the File object is the last evaluated expression, it is returned as the result of the plugin function call.
Gradient ImageDraws a diagonal gradient of the specified width & height.

The colors should be entered as hex values. To change the direction of the gradient, change the parameters to the GradientPaint constructor.
Rotate ImageLoads an image from a url and rotates it, applying an optional background color. If a background color is specified, or the background is not visible (the image is turned in 90 degree increments) then the resulting image will be a JPG. Otherwise, the resulting image will be a PNG with a transparent background
Screen CaptureA simple way to grab a screen shot of a specified rectangle of your screen. Pass in the coordinates (left, top, right, bottom) of the area that you want to take a picture of. You can use the FileMaker Get(ScreenWidth) and Get(ScreenHeight) to get the entire screen area.
Watermark ImageApply a text watermark to an image.

imageLocation can be a file location or a URL.

Email

Send EmailHere is a minimal script for sending email via an SMTP server.

Check the "input variables" section for various message parameters, including "smtpHost". Change this to your usual SMTP host, e.g. "mail.bellsouth.net" or "mail.earthlink.net", etc.

Additional possibilities include sending to multiple recipients, SMTP authentication, multi-part emails, attachments, and much more.
Send Email (HTML-Formatted)Here is a minimal script for sending email via an SMTP server.

Check the "input variables" section for various message parameters, including "smtpHost". Change this to your usual SMTP host, e.g. "mail.bellsouth.net" or "mail.earthlink.net", etc.

Additional possibilities include sending to multiple recipients, SMTP authentication, multi-part emails, attachments, and much more.
Send Email With AttachmentsHere is a more advanced script for sending email with attachments.

It's important to configure the "smtpHost" and "attachmentPath" input variables.
Send Email With AuthenticationHere is an all-in-one script for sending HTML email with attachments, and adding support for authentication.

It's important to configure the "smtpHost" and "attachmentPath" input variables.

File System

Append To FileAppends a message (textToWrite) to a text file (filePath).

Returns 1 if successful, and ERROR if unsuccessful.
Check Whether File ExistsReturns 1 if the file (pathToFile) exists, 0 if it does not. This example will return 1 on OS X, false on Windows.
Choose FolderThis prompts the user to select a folder on their hard drive. You can optionally specify a startingPath if you want the user to start in a certain location, and you can specify an optional 'prompt' message which will be used as the dialog title. If the user cancels, an empty result is returned.
Get File Modification DateReturns a date (actually text in the FileMaker date format) of when a file was modified.
Get File SizeReturns the size, in bytes, of a file
List All Files In DirectoryThis uses the listFiles method to return all the files in a directory as a return-separated list. Files whose names begin with a dot will be omitted.
List All Files RecursivelyThis uses the listFiles method to return all the files in a directory as a return-separated list. Files whose names begin with a dot will be omitted.

This version is recursive, which means it also scans all subdirectories inside the initial directory.
Read File ContentsReads a file (pathToFile) and returns the contents as the result.

This example reads the file created by the 'Write to file' example, so be sure to run that script first.
Write To FileWrites a message (textToWrite) to a text file (filePath). You can change the character encoding parameter to write in ASCII or international character sets.

Returns 1 if successful, and ERROR if unsuccessful.
Zip FileZips up a source file to a destination zipfile, returning the zipped file as a container.

'src' is the path to a single file (not a directory), or the name of a container field (if referencing a container field, it must include the TO name followed by ::, e.g. "Demo::result_container")

'destination' is where the zip file should be written to. If 'destination' is a directory, the zip file is given the same name as 'src', but with a '.zip' extension added. If destination is empty, a temporary zip file is created as the destination.

fmpro Helper

Call Script At Scheduled TimeThis calls a FileMaker script (scriptToRun) in the current file at a certain point in time (scheduledTime).

This returns 1 if the script was successfully queued to return, 0 otherwise (such as if the date was in the past).
Call Script ImmediatelyThis immediately calls a FileMaker script (scriptName) in the current file. You can use this to trigger scripts when field values change, when a tooltip is displayed, or any other time that FileMaker evaluates something in the calculation engine.

The first parameter to performScript is the name of the database to run the script - passing in a null tells ScriptMaster to run the script in the current database.

'1' is returned if the script call was successful, ERROR if something goes wrong.
Call Script With DelayThis calls a FileMaker script in the current file after a certain delay (delaySeconds). For example, to run a script after 1 hour, pass in 3600. After the delay, this calls the FileMaker Script (scriptToRun), halting any currently running script.

This script returns a 1 if no errors occur.

This uses the "runAfter" method specific to Groovy

GUI

Color Chooser DialogThis uses groovy's SwingBuilder to display a color chooser dialog. The selected color is returned as the result. There are also named output variables containing the r, g, and b values.
Formatted Dialog With Dynamic Buttons
QuickTime Frame CaptureThis displays a QuickTime video capture preview and grabs a picture snapshot from any connected QuickTime-compatible camera, such as an iSight webcam. It returns the image as a container field.
Select FileAsk the user to select a file. Returns the path of the selected file. Returns a 0 if a user clicks cancel.

Networking

Get URL as ContainerThis retrieves the contents of a URL (theUrl) and stores it into a container field. ScriptMaster automatically converts any URL returned by a script into container data.
Get URL As Container, part 2This retrieves the contents of a URL (theUrl) and stores it into a container field. ScriptMaster automatically converts any URL returned by a script into container data, adding a custom file extension if necessary.

This example grabs a dynamic chart from Google's charting service.
Get URL as TextRetrieves the contents of a URL (url) as a text field.
Post Data To URLThis sends a POST request to a URL. The POST data contains a single key and value. The URL contents are returned.

Number crunching

Base64 EncodeThis takes a text parameter (textToEncode) and returns a Base64 Encoded version of that text.
Base64 Decode to BinaryThis takes a text parameter with Base64 Encoding (encodedText) and returns a container field with the contents of the binary data.
Base64 Decode to TextThis takes a text parameter with Base64 Encoding (encodedText) and returns a decoded version of that text.
Better RandomReturns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Returned values are chosen pseudorandomly with (approximately) uniform distribution from that range. This gets around a limitation in the FileMaker random() function which often returns duplicate values.
Create AES Secret KeyThis generates an AES 128 bit secret key, BASE64 encoded. You should call this function once and store the secret key in your FileMaker solution. This secret key can then be passed to the EncryptAES and DecryptAES functions.
Cryptography - DecryptionThis converts BASE64 encoded text to raw bytes, and then uses the DES algorithm to decrypt them.

This script runs somewhat slowly when using the 'evaluate script' button, but it is very fast when compiled and registered as a FileMaker function.
Cryptography - EncryptionThis uses the DES algorithm to encrypt some text with a password. It then BASE 64 encodes the resulting bytes.

This script runs somewhat slowly when using the 'evaluate script' button, but it is very fast when compiled and registered as a FileMaker function.
Cryptography - MD5 HashThis computes an MD5 hashcode for some text. The MD5 hash is a one-way cryptographic algorithm, meaning that you cannot get the value back once it has been hashed. It is useful for verifying that the contents of some text have not been changed. It is also good for spotting duplicates.
DecryptAES
EncryptAES
HashcodeGenerating the hashcode for some text can be useful for quickly determining if two large blocks of text are different.
UUIDThis generates a UUID (Universally Unique Identifier). You could use UUIDs instead of auto-increment primary keys to ensure that primary keys are universally unique.

This example requires Java 5 or higher.

Read more about UUIDs at
http://en.wikipedia.org/wiki/Uuid

QuickTime

Video Thumbnail (Requires QuickTime)Uses the prosc_qt jar to generate a thumbnail of a specific frame in a quicktime movie.

Change the "timeUnit" input variables to the timeUnit number to extract. Typically movie files have 600 time units per second.
Video Thumbnail Grid (Requires QuickTime)Uses the prosc_qt jar to generate a grid of frames from various points in a movie.

Change the "columns" and "rows" parameters. Keep the values small (less than 12 or so).

Shell

Run Shell ScriptThis executes a shell script (shellScript) in the underlying OS. On Windows, the shell script should be a DOS script; on Unix it would be a UNIX shell script.

The output of the shell process is returned. This example will return the list of logged in users in OS X.

Sorting

Sort Value List (Case Sensitive)This sorts a list of text, in a case-sensitive fashion.
Sort Value List (Ignoring Case)This sorts a list of text, in a case-insensitive fashion.

This uses a custom comparator to convert the strings to lowercase. You could use a similar technique to convert strings to numeric values.

Text

Convert URLs to HyperlinksConverts URLs in text (inputText) to hyperlink tags.
Create RangesThis takes a starting value (start) and an ending value (end) as parameters. They must be the same length as ech other. It then returns all values whose last character is between the inputs. This is useful for doing fuzzy String index matching.
Regex MatchDetermin whether a given string matches a regular expression pattern.
Remove HTML TagsRemove all HTML tags contained in a block of text (html)
Text SimilarityThis calculates how similar two pieces of text are to each other, using the Levenshtein distance method ( http://en.wikipedia.org/wiki/Levenshtein_distance ).

The lower the number returned, the more similar the text is.
URLDecodeDecodes a x-www-form-urlencoded string. See also FileMaker's GetAsURLEncoded function.
Validate XML

WebServices

Fedex Get RatesThis queries FedEx using SOAP Web Services to get a list of shipping choices for a package.
Fedex Ship
Post XML DataThis POSTs XML data to a URL. This is ideal for manually sending XML data to simple Web Services. The URL contents are returned.
StockQuotePriceGets the current price for a stock symbol.
Terraserver Web ServiceThis uses a lightweight SOAP web services jar (prosc_webservices.jar) to query the TerraServer web service for information about any named place.

The output returned is the raw data. You can also reference the named output variables using the SMGetVariable plugin function.


Copyright © 2006-2008 Prometheus Systems Consulting d/b/a 360Works. All rights reserved.
Toll Free (866) 662-9185

Platinum member of the FileMaker Business Alliance