You're welcome!
A small implementation footnote:
The findText method returns an array of found items in the actual order they are present in the document (albeit “per story”, that is, it processes all text frames in the 'first' story, then goes to the next one etc.).
The usual way of processing this list is a loop like this:
for (loopCounter = 0; loopCounter < list.length; loopCounter++)
.. process item
but I really like the combination of a 'while (list.length > 0)' and 'list.pop()' as it's slightly less typing. However, the 'pop' method works last-to-first, and although it's true this sometimes is what you need — when changing actual text it's virtually a requirement, because otherwise the found text array will be invalidated — in this case I thought it annoying “hyperlink #1” in the hyperlink panel appears at the very end of your text, and the last hyperlink in the list appears at the very start.
So I pasted the 'reverse' command at the end of 'findText', which simply reverse the array in memory, going from end to start. And then the first 'pop' pops off the very first hyperlink, processes it, and continues with the 2nd one, etc. etc.