Sunday, November 19, 2017

#1 2015-02-17 07:38:51 pm

JMichaelTX
Member
From:: Houston, TX (The Woodlands)
Registered: 2014-07-12
Posts: 139

Evernote - Copy EN Mac Note Link (Classic)

EDIT:  UPDATED Mon, Jan 11, 2016 at   6:57 PM

SCRIPT NAME:    Copy EN Note Link (Classic)
   
DATE:    Tue, Dec 15, 2015        VER: 2.1
   
PURPOSE:
    •  Get Classic link of selected Evernote Note
    •  Copy to Mac Clipboard as RTF (Rich Text Format) so that you can
        paste to most apps as a click-able link
    •  Text is EN Note Title
    •  Link is the "Classic", internal link to EN Mac Note
       
EN Mac Versions:  5.5.2, 6.0.1+
Mac OS X:  Mavericks & Yosemite   

AUTHOR:    JMichael (member of Discussion.Evernote.com forum)
        Please PM me with any bugs/issues/questions

Applescript:


(*
   SCRIPT NAME:    Copy EN Note Link (Classic)
   
   DATE:    Tue, Dec 15, 2015        VER: 2.1
   
   PURPOSE:
       â€¢ Get Classic link of selected Evernote Note
       â€¢ Copy to Mac Clipboard as RTF (Rich Text Format) so that you can
           paste to most apps as a click-able link
       â€¢ Text is EN Note Title
       â€¢ Link is the "Classic", internal link to EN Mac Note
       
   AUTHOR:        JMichaelTX (member of Discussion.Evernote.com forum)
                   Please PM me with any bugs/issues/questions
                   
   REQUIRES:
       â€¢ Satimage.osax for HTML encode (encode entities)
               
   INSTALLATION:
       â€¢ There are several ways you can install and access this script
       â€¢ SIMPLE METHOD
           â€¢ Copy to your personal Scripts folder: /Users/<YourName>/Library/Scripts/
               (create the Scripts folder if it does not exist)
           â€¢ Select a Note in Evernote
           â€¢ Click on the Apple Scripts menu in the upper right area of your menu
           â€¢ Click on EN Note Link (classic)
           â€¢ Switch to your target app, and click in the text area where you want the link, and press CMD-V
       â€¢ OTHER OPTIONS
           â€¢ FastScripts -- [url]http://www.red-sweater.com/fastscripts/[/url]
           â€¢ Automator
           â€¢ See article on Veritrope.com for details: [url]http://veritrope.com/tech/the-basics-using-keyboard-shortcuts-with-applescripts/[/url]
   
   REF:
       â€¢ I was inspired by:
           
           â€¢ This thread on Discussion.Evernote.com forum:
               [url]https://discussion.evernote.com/topic/60623-how-can-make-the-classic-link-the-default-way-of-linking/[/url]
               
               â€¢ Post by patnpm
                   [url]https://discussion.evernote.com/topic/60623-how-can-make-the-classic-link-the-default-way-of-linking/#entry283106[/url]
               â€¢ Post by DanielB
                   [url]https://discussion.evernote.com/topic/60623-how-can-make-the-classic-link-the-default-way-of-linking/#entry291008[/url]
                   
       â€¢ I adapted the code posted by:
       
           â€¢ alastor933 in the MacScripter.com forum
           â€¢ [url]http://macscripter.net/viewtopic.php?pid=148647#p148647[/url]
======================================================================
*)


property bolDebug : false -- set to true to turn on diagnostic logs and dialogs.

-- SET THE BELOW PROPERTIES TO REFLECT THE LINK STYLE YOU WANT ---

property gstrFont : "font-family:verdana,geneva,sans-serif;"
property gstrLinkFontSize : "font-size:14px;"
property gStyleLink : "color:blue"


tell application "Evernote"
   set lstSelectedNotes to selection
   
   if lstSelectedNotes ≠ {} then
       
       --- GET THE FIRST NOTE ---
       set oNote to first item of lstSelectedNotes
       
       --- GET THE NOTE TITLE AND CLASSIC NOTE LINK ---
       set strNoteTitle to title of oNote
       set strNoteLink to note link of oNote
       
       log strNoteTitle
       set strNewTitle to ""
       
       --- REPLACE EXTENDED ASCII CHARS BETWEEN 127-253 WITH SPACE --
       
       repeat with iChar from 1 to (length of strNoteTitle)
           set strChar to character iChar of strNoteTitle
           --set strLog to ("[" & iChar & "] " & (ASCII number of strChar) & ": " & strChar)
           --log strLog
           
           if ((ASCII number of strChar) > 126) and ((ASCII number of strChar) < 254) then
               set strNewTitle to strNewTitle & " "
           else
               set strNewTitle to strNewTitle & strChar
           end if
       end repeat
       
       ## --- ENCODE THE NOTE TITLE --- ##    
       --            (requires the Satimage.osax)
       
       set strNoteTitle to encode entities strNewTitle
       log strNoteTitle
       
       --set strNoteTitle to my encode_text(strNoteTitle, false, false)
       
       --- CREATE THE HTML ANCHOR CODE ---
       set strHTMLLink to my createHTMLLink(strNoteTitle, strNoteLink)
       set strHTMLLink to "<span style=\"" & gstrFont & gstrLinkFontSize & "\">" & strHTMLLink & "</span>"
       
       --- PUT THE HTML CODE ON THE CLIPBOARD AS RICH TEXT (RTF) ---
       my copyHTMLasRTFtoClipboard(strHTMLLink)
       
       set strMsg to strNewTitle
       set strMTitle to "Evernote Internal Link Copied to Clipboard for"
       display notification strMsg with title strMTitle sound name "Hero.aiff"
       
   end if -- lstSelectedNotes ≠ {}
   
end tell

--=====================================
--    SUBPROGRAMS
--=====================================

###——————————————————————————————————————————————
#            Create HTML Link:        createHTMLLink
###——————————————————————————————————————————————

on createHTMLLink(pstrLinkText, pstrURL)
   
   return "<a href=\"" & pstrURL & "\" style=\"" & gStyleLink & "\">" & pstrLinkText & "<a>"
   
end createHTMLLink

###——————————————————————————————————————————————
#            COPY HTML TO CLIPBOARD AS RTF:    copyHTMLasRTFtoClipboard
###——————————————————————————————————————————————

on copyHTMLasRTFtoClipboard(pstrHTML)
   
   if bolDebug then display dialog "ENTER copyHTMLasRTFtoClipboard"
   
   -- REWRITTEN AS RTF AND COPIED TO THE CLIPBOARD
   set lstrCMD to "echo " & quoted form of pstrHTML & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"
   do shell script lstrCMD
   
   if bolDebug then
       display notification pstrHTML with title "Copy RTF to Clipboard"
   end if
   
end copyHTMLasRTFtoClipboard


---    A sub-routine for encoding high-ASCII characters:


on encode_char(this_char)
   set the ASCII_num to (the ASCII number this_char)
   set the hex_list to {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"}
   set x to item ((ASCII_num div 16) + 1) of the hex_list
   set y to item ((ASCII_num mod 16) + 1) of the hex_list
   return ("%" & x & y) as string
end encode_char

---A sub-routine for percent encoding strings:


-- this sub-routine is used to encode text
on encode_text(this_text, encode_URL_A, encode_URL_B)
   set the standard_characters to "abcdefghijklmnopqrstuvwxyz0123456789"
   set the URL_A_chars to "$+!'/?;&@=#%><{}[]\"~`^\\|*"
   set the URL_B_chars to ".-_:"
   set the acceptable_characters to the standard_characters
   if encode_URL_A is false then set the acceptable_characters to the acceptable_characters & the URL_A_chars
   if encode_URL_B is false then set the acceptable_characters to the acceptable_characters & the URL_B_chars
   set the encoded_text to ""
   repeat with this_char in this_text
       if this_char is in the acceptable_characters then
           set the encoded_text to (the encoded_text & this_char)
       else
           set the encoded_text to (the encoded_text & encode_char(this_char)) as string
       end if
   end repeat
   return the encoded_text
end encode_text

Last edited by JMichaelTX (2016-01-11 08:02:53 pm)


iMac-27 Late 2015 Retina 5K Screen (& others)
macOS 10.11.6 (El Capitan)


Filed under: Evernote, hyperlink, EN Mac

Offline

 

Board footer

Powered by FluxBB

RSS (new topics) RSS (active topics)