|
(* |
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
[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 |
Update Ver 1.3
CHANGE LOG: