I am pleased to announce that we have today released Macro Scheduler 14.2
Amongst other things this new version includes the following great new features:
- Self Documenting Macro Recorder with snapshots of Windows/Objects being Activated/Clicked on
- The ability to run Python code within your macros!
- A native JSON Parser
- A native XML Parser using XPath
Here’s an overview of these main new features, but for a more complete list of improvements view the history list here.
Self Documenting Macro Recorder
Ever recorded a macro and then tried to edit it but couldn’t figure out which bit did what? Well, now when you record a macro the macro recorder will take snapshots of windows that are activated and objects that you click on. These will be inserted into the script as image comments, right above the line of code they refer to. So, now, it’s easier to see exactly what your macro is doing and which bits you want to edit/copy.
Run Python Code Inside your Macros
In 14.2 there’s a new function called PyExec. It allows you to run real Python code and get back the values of any Python variables you specify. You’ll need to install the Python 2.7 DLL to your Macro Scheduler folder (or compiled .EXE folder) – there’s a link in the help file to a zip file with all the files you need.
You can run any Python code and even use third party Python imports. This is pretty wild IMO – the possibilities are endless. Here’s a simple example:
/* First ensure Python27.dll and imports are in your Macro Scheduler program folder. Download and unzip this file: https://www.mjtnet.com/software/python27.zip */ Let>url=http://ip.jsontest.com/ /* python_code: import urllib2 import json # grab data from http://ip.jsontest.com/ - see www.jsontest.com response = urllib2.urlopen('%url%') # load the json dict = json.loads(response.read()) # get the ip member myip = dict["ip"] # make a nice string representation of the dict sdict = json.dumps(dict) # Anything we print to IO is returned in the PYExec output var print "All Done" */ //Load the Python code to a variable LabelToVar>python_code,pcode //Run the code and request the values of the sdict and myip variables ... PYExec>pcode,output,sdict,myip //Display the IP address MessageModal>Your pubic IP is: %myip%
Parsing JSON
In the last few years JSON has become a very popular way to transmit data objects. Most web services now use it so it cannot be ignored. While you can parse JSON using string handling/regex having an easy to use native parser is essential. Enter: JSONParse
In the above Python example we used Python’s own JSON handling to extract an IP address from some JSON retrieved from a web service. Here’s how we can do the exact same thing using native MacroScript code:
HTTPRequest>http://ip.jsontest.com/,,GET,,JSON JSONParse>JSON,ip,myIP MessageModal>Your pubic IP is: %myIP%
And here’s an example which gets data out of a more complicated structure:
//Requires Macro Scheduler 14.2 /* MyJSON: { "uid" : "1234", "clients" : ["client1","client2","client3"], "people" : [{"Name":"Marcus","Age":"21"},{"Name":"Dorian","Age":"18"}], "color" : "red", "size" : 14 } */ LabelToVar>MyJSON,sJSON JSONParse>sJSON,uid,result JSONParse>sJSON,clients,result JSONParse>sJSON,clients[1],result JSONParse>sJSON,people[1].Name,result
Parsing XML
Of course XML is also still very popular. Up til now we’ve had to parse XML using substring handling/regex or use Microsoft’s XML object via VBScript – which is a little over-complicated IMO. We now have a simple to use native XML parser function – XMLParse. Here’s an example:
//Requires Macro Scheduler 14.2 LabelToVar>XML,sXML XMLParse>sXML,/bookstore/book,val,numBooks Let>k=0 Repeat>k Let>k=k+1 XMLParse>sXML,/bookstore/book[%k%]/title/text(),val,len MessageModal>val Until>k=numBooks /* XML: <?xml version="1.0" encoding="UTF-8"?>*/ Everyday Italian Giada De Laurentiis 2005 30.00 Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003 39.95
How to Download/Upgrade
If you have a valid maintenance plan you can download the update from your account here. If your maintenance has lapsed you can also purchase upgrades and renew maintenance from within your account.
Trial versions can be downloaded here.