본문 바로가기

Hobby/Mac

다량의 PDF 파일을 에버노트에 추가하기 (AppleScript 사용)

자료를 수집해서 저장해두고 필요할 때 찾아쓰는 용도로 에버노트를 많이 사용하고 있는데, 특히 프리미엄 기능에 PDF

자료를 수집해서 저장해두고 필요할 때 찾아쓰는 용도로 에버노트를 많이 사용하고 있는데, 특히 프리미엄 기능에 PDF 검색까지 가능하기 때문에 보관만 열심히 해두어도 필요할 때 요긴하게 찾아 쓸 수 있는 장점이 있습니다.


논문이나 기사를 에버노트에 저장하려면 새노트를 만들고, 타이틀을 지정하고, 태그를 지정해주고, 파일을 첨부시키는 단계를 반복해야 합니다. 한 두 편이면 문제가 되지 않지만 서베이한 자료가 많을 경우에는 단순 노가다양이 보통을 넘기 때문에 엄두가 잘 안나는 일이기도 합니다.


최근에 미뤄두었던 논문을 준비해야겠다는 생각이 들어 관련 학술지 논문들을 서베이했는데 자료 욕심이 많아서 그런지 서베이한 양이 좀 많았습니다. 몇 편 노가다를 해보다가 이건 아니지 싶어서 스크립트를 만들어 처리할 수 있지 않을까 싶어서 구글링을 해보니 가능할 것 같더군요.


AppleScript는 처음이데다 개발을 안한지가 오래되어 걱정은 되었지만, 생각보다 어렵지는 않았습니다. 혹시 도움이 될 수 있는 사람이 있을까 싶어 공유해봅니다.


스크립트의 기능은 지정한 폴더에 있는 PDF 파일을 에버노트의 "Papers" 노트북에 파일 하나 당 하나의 노트를 생성시켜주고 태그를 { 폴더이름, '논문', '연구', 'Papers', 'Research' }와 같이 추가시켜 줍니다. 간단한 기능이기는 하지만 200편 정도의 논문을 한 방에 추가시켜서 모르는 스크립트 배워가면서 만든 보람이 있었습니다.


Source Code:

(*
==================================================
 Create Evernote notes by importing pdf files in a folder
 Version 1.0.0
 Written By: Sungwon Choe <sungwon.choe@gmail.com>
 http://badliar.tistory.com
==================================================
*)

set folderName to choose folder with prompt "Select a folder to import" default location (path to documents folder) without invisibles
set fileNames to list folder folderName without invisibles
log "Selected folder name is : \"" & folderName & "\""

tell application "Evernote"
    -- Create a notebook named "Papers" if not exists
    if (not (notebook named "Papers" exists)) then
        make notebook with properties {name:"Papers"}
    end if
    try
        log "Set the notebook named \"Papers\""
        set theNotebook to "Papers"
    on error
        log "There is no notebook named \"Papers\". Create it."
        set theNotebook to create notebook "Papers" with type synchronized
    end try

    -- Determine the name of the journal from the folder name   
    set savedDelimiters to AppleScript's text item delimiters
    try
        set AppleScript's text item delimiters to {":"}
        set textItems to text items of (folderName as string)
        set journalName to ((item ((length of textItems) - 1) of textItems) as string)
        log "Determined journal name is : \"" & journalName & "\""
        set AppleScript's text item delimiters to savedDelimiters
    on error m number n
        set AppleScript's text item delimiters to savedDelimiters
        error m number n
    end try

    -- Make a list of tags
    set theTags to {}
    repeat with tagText in {(journalName as string), "논문", "연구", "Papaers", "Research"}
        if (not (tag named tagText exists)) then
            make tag with properties {name:tagText}
        end if
        set aTag to tag tagText
        copy aTag to the end of theTags
    end repeat
    -- log "Tags to be applied are : " & (theTags as string)

    -- Create a note for each pdf files in the folder
    repeat with a from 1 to length of fileNames
        set aFile to item a of fileNames
        if (aFile contains ".pdf") or (aFile contains ".PDF") then
            log "Create a note by importing \"" & (aFile as string) & "\""
            set notePath to folderName & aFile as string as alias
            set aNote to create note title ("[" & journalName & "] - " & aFile as string) from file notePath notebook theNotebook
            assign theTags to {aNote}
        end if
    end repeat
end tell