在 Applescript 中,仅在 TextEdit 中查找粗体字会导致应用程序挂起

In Applescript, finding only bold words in TextEdit causes app to hang

只是想找到一种普通的 applescript 方法来将变量设置为文档的所有粗体字。我一直在寻找在 Word、Pages & TextEdit 中使用 Applescript 的方法,而 TextEdit 似乎是唯一的方法(尽管可能是错误的)。

好消息是下面的脚本可以工作,但坏消息是如果文档超过 2 页,假设有 ~50 个粗体字,TextEdit 就会挂起。

还有其他方法可以使用 Applescript 获取粗体字词吗?

tell application "TextEdit"
    return words of text of document 1 where font contains "Bold"
end tell

谢谢

可能是 TextEdit 运行得异常缓慢。我只是将以下代码用于一个包含 3600 个单词的文档,其中穿插了一些 运行dom 粗体字。花了太长时间。我会考虑使用不同的可编写脚本的应用程序,例如 Tex-Edit Plus(仍然很强大,仍然很棒)。 我同时使用 "Black" 和 "Bold" 的原因是,当您将文本设置为粗体时(至少在 TextEdit 中),某些字体使用 "Black" 变体而不是 "Bold"。需要说明的是,下面的代码 有效 ,但速度非常慢。如果您等待的时间足够长,您的代码也可能有效。 :-( 但请继续阅读 :-)

tell application "TextEdit"
    tell document 1
        set thisManyRuns to count of attribute run of text of it
        repeat with r from 1 to thisManyRuns
            if font of attribute run r of text of it contains "Black" then
                --do stuff
                set color of attribute run r of text of it to {35555, 0, 0}
            end if
            if font of attribute run r of text of it contains "Bold" then
                --do stuff
                set color of attribute run r of text of it to {35555, 0, 0}
            end if
        end repeat
    end tell
end tell

我只是 运行 Tex-Edit Plus 中的这段文字,它在大约两秒钟内完成:

tell application "Tex-Edit Plus"
    tell document 1
        set thisManyRuns to count of style run of text of it
        repeat with r from 1 to thisManyRuns
            set thisStyle to style of style run r of text of it
            if on styles of thisStyle contains bold then
                --do stuff
                set color of style run r of text of it to {0, 35555, 0}
            end if
        end repeat
    end tell
end tell

...所以你可能想切换到那个。只是一个警告,我 不得不 在查询 on styles 属性 之前将 style 放入 thisStyle 变量——它会如果我试图在一行中这样做,那将不起作用。我正在处理一个 rtf 文件。