Automatorのサービスはユニバーサルパレットの代わりになる

サービスがいいMacBookにしておく - ザリガニが見ていた...。

こちらの記事を見ると、Automatorのサービスは、
選択しているテキストを編集して返すことができるみたい。
しかも全てのアプリケーションに対して!

これって、今まで何回か挑戦しては敗れてきた
ユニバーサルパレットの代わりになるのでは!?

ということで検証してみた。

結論:Automatorのサービスはユニバーサルパレットの代わりになる

以下、説明。

Automatorで「ファイル」→「新規」、テンプレートで「サービス」を選択。 詳細は上記のサービスがいいMacBookにしておくを参照されたい。

で、AppleScriptが出てくるので、そこに以下のソースを貼り付ける。
(記事の終わりにworkflowファイルのzipを置くので、やらなくてもいいです)


1.<strong> タグで囲みたい場合。

on run {input, parameters}

(* Your script goes here *)

set theElement to "strong"
set startTag to "<" & theElement & ">"
set endTag to "</" & theElement & ">"

set input to startTag & input & endTag

return input
end run

propertyは使えなかったので変数にした。
あと、「選択されたテキストを置き換える」をチェックすることが大事。
このworkflowファイルを別名で保存する。ここでは「strong」とした。

automator_service3.png ここをチェック


automator_service_strong1.png タグで囲みたいテキストを選択して、「サービス」の中に
先ほど保存したworkflowがあるのを確認し、選択。


automator_service_strong2.png

数秒待つと、選択されたテキストが、見事strongタグで囲まれた。
ぶらぼー!


2.<blockquote> タグで囲みたい場合

今度は複数行を選択することを想定。

on run {input, parameters}

(* Your script goes here *)

set theElement to "blockquote"
set startTag to "<" & theElement & ">" & return
set endTag to return & "</" & theElement & ">"

set input to startTag & input & endTag

return input
end run

automator_service_bq1.png 同じく、テキストを選択してサービスを選択。


automator_service_bq2.png 見事、blockquoteタグで囲まれた。 複数行のテキストを囲むことを想定して改行を入れてある。


3.<ul> 、<ol> タグで囲みたい場合

今度は行数を取得して、ループを組む必要がある。
これは、ユニバーサルパレットのapplescriptをほぼそのまま流用できた。

on run {input, parameters}

(* Your script goes here *)

set ListTag to "ul"
set ItemTag to "li"
set startTag to "<" & ListTag & ">"
set endTag to "</" & ListTag & ">"

set startItemTag to "<" & ItemTag & ">"
set endItemTag to "</" & ItemTag & ">"
set unixLF to ASCII character 10


--text形式にしないとparagraph数をcountできない
set theText to input as text
set numOfPara to count paragraphs of theText


--開始タグ
set theResult to startTag & unixLF


--パラグラフの数だけループ
repeat with paraIndex from 1 to numOfPara
--text形式にすると改行コード取れる
set theContent to paragraph paraIndex of theText
set theLine to tab & startItemTag & theContent & endItemTag & unixLF
set theResult to theResult & theLine
end repeat

set input to theResult & endTag & unixLF

return input
end run

automator_service_ul1.png リスト化したいテキスト(改行区切り)を選択し、サービスを選ぶ。


automator_service_ul2.png 見事 ul タグでリスト化された。
ol タグにしたいときは、StartTagとEndTagのところの ul を ol にすればいい。


ということで、strong、blockquote、ul、olタグで囲むworkflowのファイルを
まとめてzipにしたものを置いておく。
workflows.zip

ダウンロードしてダブルクリックして展開すると、
workflowファイルが4つ入ったフォルダができる。
これらのファイルを、ホームディレクトリの
Library/Services
フォルダに放り込む。
すると、右クリックで出てくる「サービス」メニューの中に
strong、bq(blockquote)、ul、ol などの項目が現れるはず。
思い切って選択してみよう。

ということで、Automatorのサービスを使うことで、
ユニバーサルパレットっぽい動作をさせることができた。
全てのアプリケーションに対して使えるところが強み。

ユニバーサルパレットのAppleScriptをちょっといじると
使えるようになるので、完全に移行することもできそうな気がする。

あとは、この新しく作ったサービスメニューに
ショートカットを割り当てたいのだが、
Service Scrubberではうまく割り当てられなかった。
これができればほぼ目標達成なのだが。
惜しい!

ちなみに今回のAppleScriptのソースの表示は
AppleScript HTMLを使わせてもらった。
ありがとうございます。


関連:
ユニバーサルパレットをスクリプトメニューで代用 (うむらうす)
ユニバーサルパレットをスクリプトメニューで代用2 (うむらうす)
Safari用MakeLink代替AppleScriptをいじってみた (うむらうす)
AppleScriptの使い方(スクリプトメニューとユニバーサルパレット) (うむらうす)

サービスがいいMacBookにしておく - ザリガニが見ていた...。
選択したテキストをExciteで翻訳してGrowlで表示させるAutomator製サービス | Macの手書き説明書

皆さんの拍手が私のモチベーションです。
励ましのコメントも送れるよ!→

ガッツゴリラ

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

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

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

このブログ記事について

このページは、2010年1月28日 00:57に書かれたブログ記事です。

ひとつ前のブログ記事は「ごめんなさい×2」です。

次のブログ記事は「最近目にとまったもの」です。

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

広告

アーカイブ