I have a script widget that runs every five seconds and does a couple of simple jobs. Recently, I wanted to add another task to it, but this one is quite expensive and only needs to run every minute or so.
I could add another widget for the job and set its repeat rate to 60 seconds, but that's an ungainly solution, since I don't want an extra button on the bar for no real reason.
Anyway, I found a solution that runs the big task every 12th time the script runs, so from a single widget, I can have jobs running at both 5 second and one-minute intervals.
The trick relies on the persistence of properties in AppleScript:
property run_counter : 0
set run_job_every to 5
set retval to run_counter as text
if run_counter is 0 then
set retval to retval & "*"
end if
set run_counter to (run_counter + 1) mod run_job_every
return retval
Create a script widget and give it the above code. The text on the widget will cycle around "0*", "1", "2", "3" and "4". The numbers represent the frequent job and the "*" represents the less frequent job running.