Bug in "Append Selected Text" internal script

The “Append Selected Text”/“Title Append” internal script is a renaming script that can be very useful. For example, say I have a web receipt document open, and I want to add the date or amount to the name. Just select the date or amount, and do Append Selected Text.

But if the document has an extension, it fails. For example, if the document is “Some web receipt.html”, and I’ve selected “$46.32” in the document, Append Selected Text changes the name to “Some web receipt.html $46.32”. What we actually want is “Some web receipt $46.32.html”

The fix is to find the filename extension and insert the selected text before the extension.

-- Append To Title (filename extension bug fixed)
-- Created by Christian Grunenberg on Aug 10 2009.
-- Copyright (c) 2009. All rights reserved.

set defaultDelimiters to AppleScript's text item delimiters
tell application id "com.devon-technologies.thinkpro2"
	try
		if not (exists think window 1) then error "No window is open."
		if not (exists content record) then error "Please open a document."
		set theText to selected text of think window 1 as string
		if theText is missing value or theText is "" then error "No text is selected."
		set oldName to name of content record
		set newName to oldName & " " & theText --will use this if there is no extension
		if oldName contains "." then
			set AppleScript's text item delimiters to "."
			set nameExtension to the last text item of oldName
			set AppleScript's text item delimiters to defaultDelimiters
			if nameExtension does not contain " " then
				--Insert text before extension
				set newName to ((characters 1 through -((length of nameExtension) + 2) of oldName) as string) & " " & theText & "." & nameExtension
			end if
		end if
		set name of content record to newName
	on error error_message number error_number
		if the error_number is not -128 then display alert "DEVONthink Pro" message error_message as warning
	end try
end tell

Thanks for this.

Another possibility is to use the “Replace Text” script and, for example, replace “.doc” with “$46.32.doc”. This works well in cases where there are multiple dots, for example, replace “.doc.pdf” with “$46.32.pdf”. Multiple extensions can happen in some cases with conversion or printing to PDFs.