You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下Bash+AppleScript实现Apple Notes保留换行添加剪贴板内容

解决macOS下Bash脚本向Apple Notes追加剪贴板内容时换行失效的问题

问题核心在于Apple Notes的笔记内容实际以HTML格式存储,而非纯文本。你之前的代码将HTML转成纯文本处理,再拼接回去时丢失了格式信息,导致换行失效。以下是修正后的脚本:

#!/bin/bash

# 获取剪贴板内容,将换行转为HTML的<br>标签,同时转义双引号和反斜杠
CLIPBOARD_CONTENT=$(pbpaste | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/\n/<br>/g')

/usr/bin/osascript <<EOD
tell application "Notes"
    set targetNote to first note whose name is "Clipboard"
    set currentHTML to body of targetNote
    
    # 提取标题(假设标题是HTML的第一行内容,即第一个<br>之前的部分)
    set titleEnd to offset of "<br>" in currentHTML
    if titleEnd > 0 then
        set noteTitle to text 1 thru (titleEnd - 1) of currentHTML
        set restOfBody to text (titleEnd + 4) thru end of currentHTML
        # 拼接新的HTML内容:标题 + 换行 + 剪贴板内容 + 换行 + 原有正文
        set newHTML to noteTitle & "<br><br>" & "$CLIPBOARD_CONTENT" & "<br><br>" & restOfBody
    else
        # 如果笔记只有标题,直接追加剪贴板内容
        set newHTML to currentHTML & "<br><br>" & "$CLIPBOARD_CONTENT"
    end if
    
    set body of targetNote to newHTML
end tell
EOD

关键修正点:

  • 格式转换:把剪贴板里的换行符\n替换为HTML的<br>标签,这是Notes识别换行的正确方式。
  • 特殊字符转义:先转义反斜杠和双引号,避免AppleScript解析here-doc时出现语法错误。
  • 直接操作HTML:不再将Notes的body转为纯文本,而是直接处理原始HTML结构,确保格式被正确保留。
  • 标题与正文分离:通过查找第一个<br>标签来拆分标题和正文,保证新内容被插入到标题之后、原有正文之前。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:55:13