AppleScript 获取文本并将其转换为可粘贴的 HTML

发布于 2024-08-13 18:06:51 字数 408 浏览 11 评论 0 原文

我们与 bugzilla 合作。每当您需要查询票证时,您只需要知道 bugid(整数),然后只需将其添加到它前面即可。

http://<bugzilla_server>/bugzilla/show_bug.cgi?id=<bug_id>

假设我有一个错误链接,如下所示 777。如果我选择并复制它,它将保留在粘贴板上,因此当我将其粘贴到邮件中时,它将正确保留链接及其属性。

我正在寻找的是简单地输入“777”,选择它并在其上运行一个 applescript,并将其替换为像上面这样的链接。有人可以帮我吗?

We work with bugzilla. Whenever you need to query a ticket you just need to know the bugid (integer) and you simply prepend this to it.

http://<bugzilla_server>/bugzilla/show_bug.cgi?id=<bug_id>

Suppose I have a bug link which looks like this 777. If I select and copy this it is preserved on the pasteboard so when I paste this into mail it will correctly preserve the link and it's attributes.

What I am looking for is to simple type '777' select it and run an applescript on it and replace it with a link like the one above. Can anyone help me out??

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

流绪微梦 2024-08-20 18:06:51

以下 AppleScript 将获取剪贴板的内容并将其替换为预先添加的 URL:

set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)

您可以将其编译为 AppleScript scpt 并使其在 Scripts 文件夹中可用或编译它到可启动的应用程序

osacompile -e 'set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)' -o replacebug.scpt  # or -o replacebug.app

如果您的主要用例是在Mail.app中撰写邮件,那么这可能不是最用户友好的方法。如果您使用的是 Snow Leopard (10.6),更简单的解决方案是利用新的文本替换功能。打开系统偏好设置 ->语言与Text 首选项面板,选择 Text 选项卡,然后单击 + 添加新的替换,也许:

Replace   With

  (b)     http://bugzilla_server/bugzilla/show_bug.cgi?id=

然后,在 Mail.app 中>,启动新消息,然后在文本正文中单击光标,按住 Control 单击鼠标以调出上下文菜单。从中选择替换 ->文本替换。从现在开始,当您输入电子邮件的文本正文时,

(b)777

(b) 将自动更改为您保存的 URL 文本:

http://bugzilla_server/bugzilla/show_bug.cgi?id=777

这也适用于其他启用 Cocoa 文本的内容Safari 等应用程序。

编辑:

当谈论在电子邮件中编写 URL 链接时,至少有三种不同的电子邮件格式,每种格式都有不同的解决方案。由于您没有说明您使用的是哪种类型,所以我将介绍所有三种格式:

  1. 纯文本格式 - 无法在撰写的电子邮件中“隐藏”URL,尽管某些电子邮件阅读器可能会提供可点击的链接纯文本 URL。

  2. HTML 格式的电子邮件 - Apple 的 Mail.app 不支持以这种格式撰写电子邮件,尽管它会显示它。使用其他一些邮件编写器客户端或您自己的程序,可以很容易地使用标准 HTML 锚点 标记编写链接。

  3. 富文本格式电子邮件 - AFAIK,这是使用 Mail.app 编写 URL 链接的唯一方法。不幸的是,似乎没有一种简单的方法可以使用 AppleScript 命令直接创建 RTF 超链接。基于建议此处,这是一种通过剪贴板创建可修改的 RTF 模板来实现此目的的方法。

    • TextEdit.app 中,创建一个新的文档窗口。
    • 插入您想要在电子邮件中显示的文本,即 777
    • 选择文本 (⌘A),然后添加链接 (⌘K)。在“链接目标”字段中输入完整的 URL 以及 777;单击“确定”。
    • 使用“格式”菜单命令根据需要修改文本格式。
    • 使用文件格式将文件(⇧⌘S)另存为temp.rtf -> 富文本格式
    • 关闭文档窗口。
    • 打开文档窗口 (⌘O),选择文件 temp.rtf 并选择忽略富文本命令
    • 在文件第一行之前插入以下内容:

      <前><代码>#!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <

    • EOF 作为单独的行附加到文件末尾。

      现在应该看起来像这样:

      <前><代码>#!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <

    • 将其保存为纯文本文件,并直接作为 shell 脚本执行或通过 AppleScript do shell script 命令调用它。

      < /里>

    这种解决方案适用于大多数支持富文本格式的其他应用程序。

The following AppleScript will take the contents of the clipboard and replace it with the URL prepended:

set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)

You can compile that to an AppleScript scpt and make it available in a Scripts folder or compile it to a launchable app:

osacompile -e 'set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)' -o replacebug.scpt  # or -o replacebug.app

If your primary use case for this is in composing mail in Mail.app, this may not be the most user-friendly approach, though. If you are using Snow Leopard (10.6), a simpler solution is to take advantage of the new Text Substitution feature. Open the System Preferences -> Language & Text preference panel, select the Text tab, and click + to add a new substitution, perhaps:

Replace   With

  (b)     http://bugzilla_server/bugzilla/show_bug.cgi?id=

Then, in Mail.app, start a New Message and, with the cursor clicked within the text body, do a Control click of the mouse to bring up the contextual menu. From it, select Substitutions -> Text Replacement. From now on, as you are typing in the text body of the email when you type:

(b)777

the (b) will automatically change to the URL text you saved:

http://bugzilla_server/bugzilla/show_bug.cgi?id=777

This will also work in other Cocoa text-enabled applications like Safari.

EDIT:

When talking about composing URL links in email, there are at least three different formats of email, each with a different solution. Since you don't say which kind you are using, I'll cover all three:

  1. Plain text format - There's no way to "hide" the URL in the composed email although some email readers might present a clickable link for a plain-text URL.

  2. HTML-formatted email - Apple's Mail.app does not support composing email in this format although it will display it. Using some other mail writer client or your own program, it's easy enough to compose a link using a standard HTML anchor <a href=...> tag.

  3. Rich Text Format email - AFAIK, this is the only way to compose a URL link with Mail.app. Unfortunately, there does not appear to be an easy way to directly create an RTF hyperlink using AppleScript commands. Based on a suggestion here, this is a way to do it by creating a modifiable RTF template via the clipboard.

    • In TextEdit.app, create a new Document window.
    • Insert the text you want to appear in the email, i.e. 777.
    • Select the text (⌘A) then add a link (⌘K). Enter the full URL also with 777 into the "Link destination" field; click OK.
    • Modify the text format as desired with Format menu commands.
    • Save the file (⇧⌘S) as temp.rtf with File Format -> Rich Text Format.
    • Close the document window.
    • Open a document window (⌘O) selecting file temp.rtf and selecting Ignore rich text commands.
    • Insert the following before the first line in the file:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      
    • Append EOF as a separate line at the end of the file.

      It should now look something like this:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250
      {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
      {\colortbl;\red255\green255\blue255;}
      \margl1440\margr1440\vieww9000\viewh8400\viewkind0
      \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
      {\field{\*\fldinst{HYPERLINK "http://bugzilla_server/bugzilla/show_bug.cgi?id=777"}}{\fldrslt 
      \f0\fs24 \cf0 777}}}
      EOF
      
    • Save this as a Plain Text file and execute directly as a shell script or call it via the AppleScript do shell script command.

    This kind of solution will work with most other applications that support Rich Text format.

屌丝范 2024-08-20 18:06:51

不确定您正在寻找的功能,但这将从剪贴板中获取一个数字并将其处理为链接,并将该链接作为标准 href URL 放在剪贴板上,该 URL 将以纯文本或富文本形式工作,例如:
错误号 777 链接

更改 到您的工作 URL。

set bug_number to the clipboard

set the_text to "<a href=\"http://<bugzilla_server>/bugzilla/show_bug.cgi?id=" & bug_number & "\" title=\"" & bug_number & "\">Bug number " & bug_number & " link</a>"

set the clipboard to the_text

Not sure exactly the function you're looking for, but this will take a number from your clipboard and process it into a link and put the link on the clipboard as a standard href URL that will work in plain or rich text, like:
<a href="http://<bugzilla_server>/bugzilla/show_bug.cgi?id=777" title="777">Bug number 777 link</a>

Change <bugzilla_server> to your working URL.

set bug_number to the clipboard

set the_text to "<a href=\"http://<bugzilla_server>/bugzilla/show_bug.cgi?id=" & bug_number & "\" title=\"" & bug_number & "\">Bug number " & bug_number & " link</a>"

set the clipboard to the_text
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文