New "selected text" AppleScript property

Thanks, Chris

So to “fix” theLink portion in my code above, I have come up with:

set theLink to reference URL of theRecord & ¬
	"?page=" & current page of fWindow & ¬
				"&search=" & my urlencode(theText)

and pulled some code from stack overflow to url encode some text as follows:

on urlencode(theText)
	set theTextEnc to ""
	repeat with eachChar in characters of theText
		set useChar to eachChar
		set eachCharNum to ASCII number of eachChar
		if eachCharNum = 32 then
			set useChar to "%20"
		else if (eachCharNum ≠ 42) and (eachCharNum ≠ 95) and (eachCharNum < 45 or eachCharNum > 46) and (eachCharNum < 48 or eachCharNum > 57) and (eachCharNum < 65 or eachCharNum > 90) and (eachCharNum < 97 or eachCharNum > 122) then
			set firstDig to round (eachCharNum / 16) rounding down
			set secondDig to eachCharNum mod 16
			if firstDig > 9 then
				set aNum to firstDig + 55
				set firstDig to ASCII character aNum
			end if
			if secondDig > 9 then
				set aNum to secondDig + 55
				set secondDig to ASCII character aNum
			end if
			set numHex to ("%" & (firstDig as string) & (secondDig as string)) as string
			set useChar to numHex
		end if
		set theTextEnc to theTextEnc & useChar as string
	end repeat
	return theTextEnc
end urlencode

Rick

Hey, Rick… let me save you a little suffering and learn you something :wink:

You can run ad-hoc JavaScript in an AppleScript via the do Javascript command. The only requirement is it has to run in a think window. However, you don’t have to specify a window nor does the window need to be even remotely related to the command. It’s literally do javascript "<insert script here>" in think window 1 :open_mouth: :slight_smile:

set theText to "Hey, Rick! Here's an easier way to URL encode some text via AppleScript…"

tell application id "DNtp"
	do JavaScript "encodeURIComponent(\"" & theText & "\");" in think window 1 -- The argument needs to be in escaped double quotes
end tell

---> Hey%2C%20Rick!%20Here's%20an%20easier%20way%20to%20URL%20encode%20some%20text%20via%20AppleScript%E2%80%A6

And yes @chrillek, I sometimes use this to inject a little JS into AS as the situation needs it. :wink:

1 Like

This parameter should actually be optional, fixed for the next release.

2 Likes

Cool trick, indeed. Though I’m not sure if calling encodeURIComponent from AS shouldn’t be considered cheating :stuck_out_tongue_winking_eye:

2 Likes

I give JS its credit. I prefer my beloved AS, but there are definitely some great JS functions that can be employed as needed.

1 Like

You guys are the best. Appreciate you!

1 Like

Making this open where it can be used at any time will make this a killer feature across all scripting. Seriously.

@chrillek and I were looking at an issue recently and he had a perfect JavaScript solution. The problem was I already had a giant applescript so rewriting in JXA wouldn’t have worked for me.

But doing this would have! Nice!

It is cheating! It’s awesomely the right kind of cheating!!