Write your own FrameMaker ExtendScript, Part 2

In January, long-time FrameMaker maven, Rick Quatro of Carmen Publishing, did a guest appearance in the second of a 2-part series on FrameMaker ExtendScripts. You may view the recording of “FrameMaker: How to write your own ExtendScripts, Part 2” here.

This session (Part 2) continues the process of creating a broadly useful ExtendScript for automating common tasks in FrameMaker, step-by-step. You can get a recording of the session here.

Please also see our blog post for Part 1 of the session here.

NOTE: This session displays a “Files” pod, which enables you to download the actual script that Rick is creating, for your own hands on.

Minute Markers for key highlights in the webinar recording “FrameMaker: How to write your own ExtendScript, Part 2”

06:00

Identify which SW you are targeting (e.g. FrameMaker, not InDesign)

07:00

Determining insertion point for insertion of a variable

08:00

Object Model Viewer to see Classes and Properties/Methods available in ExtendScript

09:00

Using the fm12 Object Reference 1.0 *.chm file, which lists QuickLinks to “methods” or what behaves like VERBS

09:45

PROPERTIES describe relevant document properties necessary for letting a method work.

11:30

Variable for NewAnchoredFormattedVar (can copy the sample code and then fill-in the blanks)

12:45

editing var modDate so it will use “Modification Date (Long)” as the format

13:20

Specifying text location:- a paragraph - “0” to indicate beginning of the paragraph

15:00

Commenting out the first working task, so the 2nd task can be created and tested separately

15:44

Creating a temporary text frame and manually inserting a DATE system variable so format of date can be inserted into a marker

16:50

Locating NewTextFrame object. Noting that this can have a parent object (e.g. an Anchored Frame)

17:45

Pop-up menu of hints appears as you type in your definition for a method

19:40

Demonstration of the process for selecting an appropriate parent object

FrameMaker and ExtendScript Window

23:30

Using “constants” for values in javascript

26:30

Designating a text location within a temporary textframe. Goal: get the textframe and the variable within the textframe.

29:00

Locating the “delete” method to be used to delete a temporary textframe with DATE variable that is used to establish current time in specified format.

31:00

Function getSystemVariableValue (Goal is to have a generic “get system variable” that would work with any system variable. Variables are made of building blocks … and their order counts.

34:00

Getting the value from a system variable via script … demonstrating a successful text

35:00

After testing functions for VARIABLES, cluster them together towards the top of the script

38:00

Using an “alert” to have retrieved variable value DISPLAY in a pop-up menu

40:00

MetaModDate markers need to be deleted at end of process

44:00

Running test of the final script – marker has been inserted with current date in desired format (extracted from a SYSTEM VARIABLE) … and temporary TEXTFRAME has been deleted.

45:00

Running script a 2nd time, we get a 2nd marker with a new current time.

45:30

Now have desire to delete the previous markers if you need to update insertion of marker with current time in it.

46:00

What to do if there is no “current active” document

48:30

Testing the script when there is no active document. Code on line 13 of script will invoke a pop-up menu alerting you to need for an open/active document

49:30

Example of a minor failure because PGF object has not been created.

50:00

ANSWERING QUESTIONS

52:50

WHERE DO YOU SAVE PORTIONS OF SCRIPTS TO BE REUSEDRick uses FileLocator Pro

57:00

FINAL SCRIPT DEMO … Rick creates a script that deals with the document that has multiple, redundant markers at the beginning of the first paragraph in the document. Specify the type of marker (name) to determine if it should be deleted … this creates a “loop” …

Get the full recordings of Part 1 and Part 2 of our webinars “FrameMaker: How to write your own ExtendScripts” here: