Google Chrome から開いている(アクティブな)タブから URL とタイトルを取得し、<a rel="external" href="URL">TITLE</a>
な HTML を生成してクリップボードへコピーします。
スクリプト全体
tell application "Google Chrome" to set L to {URL of active tab of window 1, title of active tab of window 1} set item 2 of L to do shell script "LANG=ja_JP.UTF-8 /usr/bin/ruby -ne 'require \"cgi\"; puts CGI.escapeHTML($_)' <<<" & quoted form of item 2 of L set the clipboard to "<a rel=\"external\" href=\"" & item 1 of L & "\" title=\"" & item 2 of L & "\">" & item 2 of L & "</a>"
1行目
普通に書くと下記のようなコードになるかと思いますが Google Chrome は1度しか呼ばないのでリストを使って1行で済ませています。Google Chrome.sdef を読むとタブの情報は tab {n}
で拾えるような気がするんですが active tab
じゃないと取得できないようで…。
tell application "Google Chrome" set theURL to URL of active tab of window 1 set theTITLE to title of active tab of window 1 end tell
2行目
取得したタイトルからエスケープが必要になる文字を Ruby を使って変換しています。Ruby スクリプト部分に直接文字列を埋め込んでしまうと誤作動を起こす可能性があるため quoted form of
化したものをヒアストリングを使って標準入力から読み込ませます。AppleScript の do shell script
環境ではシェルの初期環境変数がターミナル等とは異なるため LANG=ja_JP.UTF-8
や Ruby の -Ku
オプションを指定しないとエラーになることがあります。タイトルに改行コードが入っていることはまず無いと思うので -n
オプションは要らないかもしれません。
LANG=ja_JP.UTF-8 /usr/bin/ruby -ne 'require "cgi"; puts CGI.escapeHTML($_)' <<<'TITLE OF ACTIVE TAB'
3行目
URL とタイトルから HTML を生成し、クリップボードへコピーしています。
生成例
Yahoo! JAPAN のページから以下のコードが生成されます。
<a rel="external" href="http://www.yahoo.co.jp/" title="Yahoo! JAPAN">Yahoo! JAPAN</a>