For example - I have a script that takes in a script parameter from a button, checks the current layout and then performs different logic based on the report button that was pressed:
On the button that calls the script I set the script parameter to the report I want:
Now, if I were to change the variables from local variables (that are only valid as long as the script runs) into global variables (are available until the user quits) - I can set all the values as a single script parameter:
Let ( [ $$WhatReport = "Customers" ; $$CurrentLayout = Get ( LayoutName ) ; $$ShowPreview = 0 ] ; "" )In the above code I'm using the "Let" function to simply define all my global variables and then I can rewrite my script to look like this:
Pretty cool!
Now there are some pros and cons to this approach. On the pro side: I've greatly simplified my script. On the con side - I now have to put that "Let" function on all my buttons (and any other buttons I create) - on every layout that I want to call this script from.
Personally, I'm not a big fan of passing 100 variables from the calling button/trigger/object - unless I absolutely have to. I can't tell you the number of hours I've spent debugging because I've forgotten to set a certain parameter to the right value - plus, I really don't like having a lot of global variables hanging around when I don't need them (you can't set local variables when passing parameters, unfortunately).
Most of the time (there are exceptions, of course) - I try to keep things as simple and encapsulated as possible. So, taking our first script as the example - here's another tip: you can set multiple local variables within your script the same way as we set the global variables in our script parameter.
To do this - we need to execute a script - and because there is no script step to simply "evaluate" or perform this type of action - we need to set a single variable. In my case I'm setting a local variable called "$blah" to this calculation:
Here's the revised script:
I hope this technique will save you some time when you develop your solution!
No comments:
Post a Comment