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

エルゴソフトのパッケージソフト事業終了を受け、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
皆さんの拍手が私のモチベーションです。
励ましのコメントも送れるよ!→

ガッツゴリラ

この最も大事な位置にガッツポーズをするゴリラが表示されていることに何の意味があるのだろうか?答え:何もありません。こんなところまでお読みいただきありがとうございました。

Macオンラインウエア情報検索

Loading
Macオンラインウエア情報検索についてはこちらを参照ください。 →「Macオンラインウエア情報検索」をアップデートしました2012

このブログ記事について

このページは、2008年3月 2日 15:20に書かれたブログ記事です。

ひとつ前のブログ記事は「Web拍手にお答え20080227」です。

次のブログ記事は「慚愧って何だ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

アーカイブ