エルゴソフトのパッケージソフト事業終了を受け、egbridge-Universalに依存している私としては、使っている機能を他の形で実現する必要が出てきた。持っているソフトをそのまま使い続けることは可能だが、さすがにOSのアップグレードなどに対応してくれはしないだろうからだ。
さて、私はいまだに基本的なHTMLは直打ちで書いているのだが、そのタグ付けをegbridge-Univarsalのユニバーサルパレットを使ってやっていた。
→egblidge Universalの使い方 2 (うむらうす)(strongとかtable)
→egbridge Universalの使い方 3 (うむらうす)(タイトル付きaタグ)
この機能は便利なので、他のやり方で達成したい。ユニバーサルパレットは、異なるアプリに対して使えるところがよかったのだが、さてどうするか・・・。普通に考えると、スクリプトメニューにAppleScriptを置いて、そこから起動するのが良かろう。
まとめると、やりたいことは以下のようになる。
・ユニバーサルパレットで行えるHMTLタグ付けを、ユニバーサルパレットから行えるようにする
・具体的には、スクリプトメニューのAppleScriptで、色々なアプリ上で選択している文字列を<tag> </tag>で囲む。例えば「強調」を「<strong>強調</strong>」のようにする
と思ったら昔そういう記事を書いていたことが判明した。えらいぞ自分。えへへほめられちった(一人二役)。
→ユニバーサルパレットをスクリプトメニューで代用 (うむらうす)
どれどれ・・・
色々調べてみた結果、以下のような結論に達した。結論:ムリ。
理由:ユニバーサルパレットでAppleScriptを走らせると便利なのは、 IMと連動していることで、どのアプリケーションに対しても 文字列を操作できることが重要だった。
一方AppleScript単体では「tell application ""」の縛りをまぬがれず、 対象となるアプリケーションを指定してやらなければならない。 つまり、ブラウザ上、エディタ上、メモアプリ上など、 どれに対しても一つのscriptで対応するということはできないようなのだ。
えらくないじゃん!!
ほめて損した!すみません。(一人二役)
しょうがない、調べ直すか。
・
・
(調査中)
・
・
わかった。がんばればできる。ユニバーサルパレットをこういう風に使っていて「これからどうしよう」と思い悩んでいる全国1億2000万人のユーザのためにやり方を書いておこう。
以下やり方。
調べた結果
- アプリケーションの名前を取得
- そのアプリに対して「⌘+c」の指令を出しコピー
- コピーした内容をタグで囲む
- アプリに対して「⌘+v」でペースト
AppleScriptは「あるアプリケーションに対して」「ある操作を行わせる」的な書き方をするため、「任意のアプリ」に対して命令は出しにくいので、上のようにアプリケーションの名前を取得し、指定してコピペの指令を出すわけだ。
(参考:文字列の取得 by AppleScript)
ということで作ったスクリプトが以下のもの。
スクリプトダウンロード:strong_tag.zip
使い方:
上のzipファイルを解凍してできたAppleScriptファイル「strong_tag.scpt」を、ホームフォルダ内の「ライブラリ→Scripts」に移すと、スクリプトメニューにstrong_tagという項目が表示される。
スクリプトメニューって何?と言う方は以下の記事の「方法2:スクリプトメニューに登録する」を参照されたい。
→NBA TVのvideoを手軽に楽しむ (うむらうす)
使用上の注意:
実行に2,3秒かかるので、その間にコピーしたいアプリケーションを切り替えてしまうと、うまくタグで囲めないことがある。焦らずしっかり動作を見届けていただきたい。ただ5秒とか10秒とかかかって何も起きない場合、それはうまく動かなかったということなので、何時間も辛抱強く待ち続けないで欲しい。
ということでできたが、美しくない・・・使い勝手もイマイチ・・・もっと簡単にできないものか?そもスクリプトメニューから探すよりも、「文字を選択」→「右クリックから選択」とかの方が良くないか?そのあたりは今後の課題ということで。
まとめ:
- ユニバーサルパレットから行っていたHTMLタグ付けを、スクリプトメニューから行えるようにした
- ⌘+c,v でコピペしたりしているので動作が遅い
- もうちょっとなんとかしたい
以下、興味のある人向け、AppleScriptのソース。
property theElement : "strong"
on run
set clipData to the clipboard
set startTag to "<" & theElement & ">"
set endTag to ""
-- get the name of the active application
set frontmostApp to path to frontmost application
tell application "Finder"
set appName to name of frontmostApp
end tell
-- in case the name ends with “.app”
if appName ends with ".app" then
set appName to text 1 thru -5 of appName
end if
try
activate application appName
tell application "System Events"
keystroke "c" using command down
-- adjust delay time below depending on your environment
delay 1
set the clipboard to (startTag & (the clipboard) & endTag) as text
keystroke "v" using command down
end tell
on error err_msg number err_num
display dialog err_msg & "(" & err_num & ")"
end try
set the clipboard to clipData
end run








コメント (2)
gbridge-Univarsalのユニバーサルパレットは使ったことないけど、
Butlerの「キーストローク機能」を使えば、
1.選択部をコピー(command+C)
2.タグ入力+ペースト(command+V)+タグ入力
という感じで、多分似たようなことができるんじゃないでしょうか?
上記スクリプトのようにクリップボードの内容を書き戻すことまでは、できないでしょうけど・・・。
投稿者: wakaba | 2008年3月 3日 00:38
日時: 2008年3月 3日 00:38
wakabaさん、毎度どうもです。
なるほど。Butlerにもキーストロークの機能があるのですね。あるいはButlerにAppleScriptを登録しても同じことができますね。
ユニバーサルパレットでやってもButlerでやってもスクリプトメニューでやってもよいのですが、ちょっとスクリプトの内容をスマートにやりたいものです。
投稿者: ハル | 2008年3月 3日 23:15
日時: 2008年3月 3日 23:15