Now after I’ve ended up about 700 times to always do the same thing: In BibDesk, add a “Note” field to a publication, copy my template for that note field, paste it into the publication, then copy and paste the URL I want to refer to into the right place, I got bored. Here’s another way of doing it (obviously attached to a keyboard shortcut by one of the usual means, e.g. BetterTouchTool). It takes the URL on the clipboard, escapes some characters that LaTeX would choke on, wraps it with my template, calculates the current date, and adds it to the notes field (which is created if it wasn’t there). If the field was there, nothing is added, but the result is copied back to the clipboard.
-- Create a Note field in Bibdesk and paste -- the content of the clipboard as a link -- [Online]. Available from: \url{} (Accessed: January 21, 2014) property theFieldToSet : "Note" property theFormatString : "[Online]. Available from: \\url{###url###} (Accessed: ###date###)" tell application "BibDesk" activate set theBooks to the selection of document 1 repeat with theBook in theBooks set shouldSet to true if (value of field theFieldToSet of theBook is not "") then set shouldSet to false -- do not set but copy to clipboard end if set theUrl to the clipboard as text set theUrl to my replaceString(theUrl, "%", "\\%") set theUrl to my replaceString(theUrl, "#", "\\#") set theUrl to my replaceString(theUrl, "&", "\\&") set theUrl to my trim(theUrl) set theValue to theFormatString set theValue to my replaceString(theValue, "###url###", theUrl) set theValue to my replaceString(theValue, "###date###", my timeStamp()) if shouldSet then set the value of field theFieldToSet of theBook to theValue else set the clipboard to theValue end if end repeat end tell on timeStamp() tell (current date) to get (it's month) & " " & day & ", " & (it's year as integer as text) return result as text end timeStamp on replaceString(theText, oldString, newString) local ASTID, theText, oldString, newString, lst set ASTID to AppleScript's text item delimiters try considering case set AppleScript's text item delimiters to oldString set lst to every text item of theText set AppleScript's text item delimiters to newString set theText to lst as string end considering set AppleScript's text item delimiters to ASTID return theText on error eMsg number eNum set AppleScript's text item delimiters to ASTID error "Can't replaceString: " & eMsg number eNum end try end replaceString on trim(t) set tc to (count t) repeat with i from 1 to tc -- remove leading space if text i of t is not " " then repeat with j from tc to i by -1 -- remove trailing space if text j of t is not " " then return text i thru j of t end repeat end repeat return "" -- the text contains only spaces, return empty string end trim