如何使用AppleScript从Evernote导出笔记?

时间:2012-08-13 18:14:42

标签: applescript evernote

我正在尝试使用AppleScript将笔记从Evernote v.3.3.0以HTML格式导出到磁盘上的某个位置。手头的任务似乎并不特别复杂,但我对Evernote相对较新,对AppleScript来说是全新的并没有多大帮助......;)

这是我到目前为止所提出的意见 - 非常感谢任何评论!

tell application "Evernote"
    set allmynotes to find notes
    set outputpath to "/Users/{myusername}/Desktop/Test"
    export allmynotes to outputpath format HTML
end tell

根据我的理解,导出为HTML会为每个笔记创建一个文件,这就是为什么我假设我需要指定输出文件夹名称而不是输出文件名称。另一个假设是,双击时脚本将使用活动用户的凭据运行;在我的机器上,该用户有足够的权限写入指定的文件夹。

到目前为止的结果是Evernote got an error: Unable to remove existing output file." number 1Evernote got an error: Unable to create output directory.。有什么想法吗?

非常感谢提前! :)

5 个答案:

答案 0 :(得分:7)

终于胜利了!问题与我的脚本无关,以及我从App Store安装了Evernote的事实。与可以从evernote.com下载的版本不同,App Store版本受到Mac OS X中App Sandboxing的限制。现在,安装了非App Store版本后,上述脚本运行良好。

再次感谢您的回答,以及遇到同样问题的人 - 我希望您的问题也能通过以上方式解决。

答案 1 :(得分:1)

认为这是3.3中的错误 - 我写了a fair number of AppleScripts for Evernote(包括那些具有工作导出功能的)并且最近有encountered the same types of "permission" errors

当我联系Evernote开发者支持时,他们回答说他们的团队目前正在研究这个问题。我将把这个页面转发给他们以供参考,希望版本3.3.1能带来修复!

答案 2 :(得分:0)

你很亲密:

set outputpath to (path to desktop as text) & "Evernote Test"
do shell script "mkdir -p " & quoted form of POSIX path of outputpath

tell application "Evernote"
    set allmynotes to find notes
    export allmynotes to outputpath format HTML
end tell

答案 3 :(得分:0)

在Evernote 5.2.1(Mac OS X 10.8.4)上,无论输出文件夹是否已存在,我都可以验证adayzdone的答案是否可靠。如果给定的文件夹确实存在,Evernote会将其移至废纸篓并创建一个新文件夹。

从最初的问题来看,我收集了关于如何处理边缘情况的不确定性(例如已经存在的早期导出文件夹)。这是用对话框处理这种情况的代码。

set folderName to "Latest Evernote HTML Export"
set exportFolder to (path to documents folder as text) & folderName as text
tell application "Finder"
    if exportFolder exists then
        set answer to the button returned of (display dialog "This will overwrite the previous Evernote HTML export" buttons {"Stop", "Overwrite"} default button 1)
        if answer is equal to "Stop" then
            error number -128 -- end script with error "User Cancelled"
        end if
    end if
end tell

tell application "Evernote"
    set allNotes to find notes
    export allNotes to exportFolder format HTML
end tell

提示进行测试:为避免导出完整的Evernote库(可能非常大),可以用 {firstNote,secondNote} 替换两次出现的 allNotes

答案 4 :(得分:0)

set folderName to "Latest Evernote HTML Export"
set exportFolder to (path to documents folder as text) & folderName as text
tell application "Finder"
    if exportFolder exists then
        set answer to the button returned of (display dialog "This will overwrite the previous Evernote HTML export" buttons {"Stop", "Overwrite"} default button 1)
        if answer is equal to "Stop" then
            error number -128 -- end script with error "User Cancelled"
        end if
    end if
end tell

tell application "Evernote"
    set allNotes to find notes
    export allNotes to exportFolder format HTML
end tell