« Web拍手にお答え20080227 | メイン | 慚愧って何だ »

ユニバーサルパレットをスクリプトメニューで代用2

- MacOSX

エルゴソフトのパッケージソフト事業終了を受け、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万人のユーザのためにやり方を書いておこう。

以下やり方。

調べた結果

  1. アプリケーションの名前を取得
  2. そのアプリに対して「⌘+c」の指令を出しコピー
  3. コピーした内容をタグで囲む
  4. アプリに対して「⌘+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

web拍手とは

トラックバック

このエントリーのトラックバックURL:
http://soap.s216.xrea.com/umu/mt/mt-trackback-script.cgi/1323

コメント (2)

wakaba:

gbridge-Univarsalのユニバーサルパレットは使ったことないけど、
Butlerの「キーストローク機能」を使えば、
1.選択部をコピー(command+C)
2.タグ入力+ペースト(command+V)+タグ入力
という感じで、多分似たようなことができるんじゃないでしょうか?

上記スクリプトのようにクリップボードの内容を書き戻すことまでは、できないでしょうけど・・・。

wakabaさん、毎度どうもです。

なるほど。Butlerにもキーストロークの機能があるのですね。あるいはButlerにAppleScriptを登録しても同じことができますね。

ユニバーサルパレットでやってもButlerでやってもスクリプトメニューでやってもよいのですが、ちょっとスクリプトの内容をスマートにやりたいものです。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

最近のトラックバック

アーカイブ

クリエイティブ・コモンズ

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type