11

プレーンテキストをクリップボードにコピーする方法を知っています。

oascript -e 'set the clipboard to "plain text"'

しかし、問題は、HTMLコンテンツをクリップボードにコピーするにはどうすればよいかということです。たとえば、次のhtmlコンテンツをクリップボードにコピーするにはどうすればよいですか。

<b>bold text</b>

テキストエディットに貼り付けると太字のテキストが表示されるようにしますか?

よろしくお願いします!


私はこれに対する中間的な解決策を見つけました:

echo "<b>bold text</b>" | textutil -stdin -stdout -format html -convert rtf | pbcopy

これはこれまでのところうまく機能していますが、残念ながら、画像タグでは機能しないことがわかりました。

echo "<img src=\"https://www.google.com/images/srpr/logo3w.png\">" | textutil -stdin -stdout -format html -convert rtf | pbcopy

これは私が望む仕事をしないので、誰かが理由を知っていますか?
ありがとう!


私は実用的な解決策を見つけて、それを以下に投稿しました:)

4

6 に答える 6

27

私は解決策を見つけました。そのアイデアは、RTFクラスの代わりにHTMLクラスを直接使用することです。(テキストエディットまたはWebエディターは、このHTMLクラスとRTFクラスデータを処理できます)
必要なのは、HTMLコードを生の16進コードに変換することだけです。
完全なコードは次のようになります。

hex=`echo -n "your html code here" | hexdump -ve '1/1 "%.2x"'`
osascript -e "set the clipboard to «data HTML${hex}»"

もちろん、それらを1つの文に組み合わせることができます。
これが興味のある人に役立つことを願っています。:)

于 2012-06-18T18:55:02.113 に答える
4

入力HTMLが大きすぎる場合、@ kjによる解決策は機能しません。次のような、いくつかのエラーメッセージが表示される場合があります。

/usr/bin/osascript: Argument list too long

@kjのソリューションを実行可能ファイルに変換し、パイプを介してデータを処理することで、ソリューションにいくつかの改善を加えました。それもお役に立てば幸いです。

実行可能

〜/ bin / pbcopyhtml:

#!/bin/sh
printf "set the clipboard to «data HTML$(cat $@ | hexdump -ve '1/1 "%.2x"')»" | osascript -

使用法

パイプから

$ printf '# title\n\n- list\n- list' | cmark | ~/bin/pbcopyhtml
$ osascript -e 'the clipboard as record'
«class HTML»:«data HTML3C68313E7469746C653C2F68313E0A3C756C3E0A3C6C693E6C6973743C2F6C693E0A3C6C693E6C6973743C2F6C693E0A3C2F756C3E0A»

ファイルから

$ printf '# title\n\n- list\n- list' | cmark > sample.html
$ ~/bin/pbcopyhtml sample.html
$ osascript -e 'the clipboard as record'
«class HTML»:«data HTML3C68313E7469746C653C2F68313E0A3C756C3E0A3C6C693E6C6973743C2F6C693E0A3C6C693E6C6973743C2F6C693E0A3C2F756C3E0A»
于 2020-03-20T04:18:26.043 に答える
1

私はAppleScriptが得意ではありませんが、うまくいくものがあります。残念ながら、Safariウィンドウが開くため、すぐには使用できません。パフォーマンスの低下を補うために遅延値を調整する必要があるかもしれませんが、私のテストでは0.25秒で十分な長さのようでした。

set theHTML to "<b>bold text</b>"

tell application "Safari"
    open location "data:text/html," & theHTML
    activate
    tell application "System Events"
        keystroke "a" using {command down}
        keystroke "c" using {command down}
    end tell
    delay 0.25
    close the first window
end tell

その後、レンダリングされたテキストがクリップボードに保存され、テキストエディットに貼り付ける準備が整います。

于 2012-06-18T15:39:32.147 に答える
1

Yosemiteのこのスレッドでは、他のソリューションを使用できませんでした。RTFコンテンツをクリップボードに入れると、テキストエディットに貼り付けるときは機能しましたが、Chromeに貼り付けるときは機能しませんでした(Googleスプレッドシートにスクリプトを貼り付けたかったのです)。最終的に私はこれを機能させることができました:

set rawHTML to "<a href=\"" & gmailURL & "\">" & myTitle & "</a>"
set escapedData to do shell script "echo " & (quoted form of rawHTML) as «class HTML»
set the clipboard to escapedData
于 2015-12-31T18:50:08.813 に答える
0

申し訳ありませんが、コードはOSXMavericksのAppleScriptEditorでコンパイルされません。

hex=`echo -n "your html code here" | hexdump -ve '1/1 "%.2x"'`
osascript -e "set the clipboard to «data HTML${hex}»"

ただし、次のコードが適切に機能することがわかりました。

set the_HTML to "<font size=4 face=\"verdana\"><a href=\"" & the_url & "\" target=_blank>" & link_text & "</a></font>"
--set the clipboard to the_text

do shell script "echo " & quoted form of the_HTML & " | textutil -format html -convert rtf -stdin -stdout | pbcopy -Prefer rtf"

もちろん、上記のステートメントの前に、AppleScript変数「the_url」と「link_text」を設定する必要があります。

于 2015-04-26T05:56:37.220 に答える
0

(チャームのように機能するRyan Patterssonによるanwserを拡張します。)

クリップボードへのリンクを配置するサブルーチンを作成し、コード内の複数の場所から呼び出すことができます

my urlToClipboard("Gmail", "http://gmail.com")

on urlToClipboard(theTitle, theUrl)
    set rawHTML to "<a href=\"" & theUrl & "\">" & theTitle & "</a>"
    set escapedData to do shell script "echo " & (quoted form of rawHTML) as «class HTML»
    set the clipboard to escapedData
end urlToClipboard
于 2016-07-03T09:23:17.510 に答える