Evernote Mac AppleScript to Create Summary Note from Extracted Text in Delimiters (EN Mac AS)
###Script: ####EN Mac Create Note from Text in Delimiters.applescript
###Purpose:
###Script Settings Designed to be Changed -- Change the below properties (in the script) to suit your needs
property nbName : "TestExtractText"
property beginDelim : "***"
property endDelim : "!!!"
###Example Note with Delimiters
###Example of Note Created
###Created Note Process
###Disclaimer
###Evernote Discussion For more info, you may want to visit the Evernote Forum topic concerning this script: Script to Search + Copy
###REQUIRED:
(*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[EN] Extract Text in Delimiters (AS)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
VER: 1.3 LAST UPDATE: 2016-06-13
PURPOSE:
• Extract text in delimited from all Notes in Specified Notebook
AUTHOR: JMichaelTX
Find any bugs/issues or have suggestions for improvement?
Please post below
CHANGE LOG:
1.3 2016-06-13 BUG FIX: textutil now properly returns plain text
ADDED: Found text that is only CR or LF is now excluded
1.2 2016-06-10 ADDED: Exclude empty found items (nothing between delimiters)
CHANGED: Do NOT produce a Summary Report Note
if no notes are found with delimiters.
1.1 2016-06-08 ADDED to output:
• Source Note Title as hyperlink
• Last Update of Source Note
REQUIRED:
1. Mac OS X Yosemite 10.10.5+
2. Mac Applications
• Evernote Mac 6.7+
REF: The following were used in some way in the writing of this script.
1. Requested by:
Script to Search + Copy
https://discussion.evernote.com/topic/96601-script-to-search-copy/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*)
### SCRIPT SETUP ###
-- Change the below properties to suit your needs
property nbName : "TestExtractText"
property beginDelim : "***"
property endDelim : "!!!"
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set newNoteHTML to "<div id=\"en-note\">" & linefeed & linefeed -- & "<div><br /></div>"
-- Must add "</div>" at END of all text for note --
tell application "Evernote"
set noteList to every note of notebook nbName
set numNotesWithDelim to 0
repeat with oNote in noteList
set noteHTML to HTML content of oNote
set noteText to do shell script "echo " & quoted form of noteHTML & space & "| textutil -format html -convert txt -stdin -stdout"
set AppleScript's text item delimiters to {beginDelim, endDelim}
set parsedList to text items of noteText
--set foundItems to even items of parsedList
set foundItems to {}
repeat with iItem from 2 to (count of parsedList) by 2
##CHG: test for no chars between delimiters ##
set textStr to text of item iItem of parsedList
if (textStr ≠ "") and (textStr ≠ return) and (textStr ≠ linefeed) then
set end of foundItems to item iItem of parsedList
end if
end repeat
if ((count of foundItems) > 0) then ##CHG: Add IF
set numNotesWithDelim to numNotesWithDelim + 1
##CHG: --- CREATE HYPERLINK TO NOTE ---
set noteTitle to title of oNote
set noteLink to note link of oNote
set noteHTMLLink to "<a href=\"" & noteLink & "\">" & noteTitle & "</a>"
set noteUpdated to (modification date of oNote)
set noteUpdated to date string of noteUpdated
set AppleScript's text item delimiters to ("</div>" & linefeed & "<div>")
set textToAddToNote to foundItems as text
log textToAddToNote
##CHG: ADD Note link to output
set newNoteHTML to newNoteHTML & linefeed & ¬
"<div> <br/>" & "Text From: " & noteHTMLLink & " (Updated: " & noteUpdated & ")</div>" & linefeed ¬
& "<div>" & textToAddToNote & "</div>"
end if -- Delimited Text was found
log "end of repeat"
end repeat
##CHG: Make new Note ONLY if Notes with Delimiters were found ##
if (numNotesWithDelim > 0) then
set newNoteHTML to newNoteHTML & linefeed & "</div>"
log newNoteHTML
set titleNote to nbName & ": Weekly Summary " & date string of (current date)
create note with html newNoteHTML ¬
title titleNote ¬
notebook nbName
else
set msgStr to "••• NO Notes were found with the Delimiters •••"
log msgStr
display dialog msgStr with title (name of me)
end if
end tell -- Evernote