Applescript 如何删除evernote中注释的最后一行?

Applescript 如何删除evernote中注释的最后一行?,applescript,evernote,Applescript,Evernote,我想删除evernote中每个音符的最后一行。 使用shell脚本很容易,例如,使用wc获取注释的长度,然后使用head打印除最后一行之外的所有行,或者使用sed。 但是我找不到一种方法将便条的内容流到shell中。 我试过这个(还有很多其他的) do shell script“echo这不是一个解决方案。它是不适合注释行的指导/建议。 你的任务比看上去复杂得多。你有两大挑战需要克服: (1) 删除用户文本的最后一行(与ENML文本的最后一行相反) (2) 更新现有注释ENML #1是可以克服的

我想删除evernote中每个音符的最后一行。 使用shell脚本很容易,例如,使用wc获取注释的长度,然后使用head打印除最后一行之外的所有行,或者使用sed。 但是我找不到一种方法将便条的内容流到shell中。 我试过这个(还有很多其他的)


do shell script“echo这不是一个解决方案。它是不适合注释行的指导/建议。

你的任务比看上去复杂得多。你有两大挑战需要克服:
(1) 删除用户文本的最后一行(与ENML文本的最后一行相反)
(2) 更新现有注释ENML

#1
是可以克服的。ENML文本的最后一行包含您不想删除的XML标记。它与您在Evernote应用程序中查看的最后一行用户文本不同。下面是一个示例ENML文本,它有3行文本。最后一行用户嵌入在最后一行ENML中,该行有多个标记


2019-02-02 21:47 GMT-6
这是一个测试。
一个
  • 两个
  • 三个

  • 这是最后一行。
    #2
    是一个巨大的挑战。您可以通过脚本更改Note HTML,但不能更改Note ENML。HTML将不包含任何对嵌入图像和附件的引用。我看到的唯一解决方法是编辑隐藏在
    ~/Library/Application Support/com.Evernote.Eve中的Evernote数据文件夹中的实际文件rnote
    文件夹(称为“Evernote数据库文件夹”)。oth,如果要使用修改后的ENML文本创建新注释,则可以轻松完成。从脚本编辑器打开Evernote脚本字典,查看可用的内容

    如果您只是想创建一个新的便笺,请更新您的问题,以表明这样做

    如果明天我有更多的时间,我将进一步检查


    更新2019-02-03 18:17 GMT-6

    现在OP已经声明他只能使用HTML


    2019-02-02 21:47 GMT-6
    参考:
    这是一个测试。
  • 一个
  • 两个
  • 三个
    这是最后一行。
    好的,这是我使用Evernote便笺的HTML的解决方案。
    注意:备注中的任何图像或附件都可能丢失

    将其作为注释的HTML:


    2019-02-02 21:47 GMT-6
    参考:
    这是一个测试。
  • 一个
  • 两个
  • 三个

  • 这是XY、AB和/dir1/dir2/file.text路径的最后一行。
    哇,感谢您已经提出了详细的建议。我只是随机选择了ENML格式。因此,如果更改HTML更容易,那当然是可能的。Using HTML更简单。您可以使用HTML获取并设置注释正文。我们可以使用正则表达式删除最后一行用户文本,但如果我们必须考虑其他内容(如

    ),这将是一个比我想象的更大的挑战课文结束后。你可以发布一个真实的例子,说明你想删除最后一行用户的EN注释的HTML。我会用我正在使用的例子更新我的以上答案。嗨,Michael,非常感谢你的帮助,非常感谢。不幸的是,它还没有起作用。这里是文章的最后几行h由脚本拾取。它们在脚本前后完全相同。

    bear使用的Evernote标记:
    顺便说一句。文本“Evernote tags to used by bear:”后跟一些标记,是我要删除的行。这可以使正则表达式变得更简单。但无论我如何尝试,该行都不会被删除。
    tell application "Evernote"
    set noteList to find notes ""
    repeat with i from 1 to number of items in noteList
        set this_note to item i of noteList
        set this_note_text to ENML content of this_note
        my removeLastLine(this_note_text)
    end repeat
    end tell
    
    on removeLastLine(note)
    set countCmd to "wc <<< " & note
    (* do shell script countCmd *)
    set noteText to note as string
    log noteText
    do shell script "echo <<<" & noteText
    (* set newNote to do shell script "head -(size - 1)" *)
    end removeLastLine