上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--|スポンサー広告||TOP↑

~/Library/InputManagers
とか
~/Library/QuickTime
などに自分で追加したファイルを一時的に退避したい。
でも退避したファイルどこに置こう? 置いた場所忘れないようにしなきゃ。
そんなときは「フォルダ名+ (Disabled)」のような名前で新規フォルダを作ると判りやすいし、入れ替えが楽だよ。例えばこんな感じ。

~/Library/InputManagers --読み込まれる
~/Library/InputManagers (Disabled) --読み込まれない
~/Library/QuickTime --読み込まれる
~/Library/QuickTime (Disabled) --読み込まれない

別にどんな名前でもいいけどね。

そんだけ(*´ω`*)


スポンサーサイト
03/30|Macコメント(0)トラックバック(0)TOP↑

AppleScript に限った話ではないんですが。
スクリプト中に連続した半角スペースが(文字列として)出てくる場合、これをそのまま HTML に書き出して公開すると、Web ブラウザでは1つのスペースとして表示されてしまいます。なので、

" " (スペース2つ)

ごとに

<span style="white-space:pre">&#x20;&#x20;</span>

みたいな感じの文字列に置換するといいですよと、そんな話。
HTML の pre 要素はなんだか好きになれないので^^;


03/26|AppleScriptコメント(0)トラックバック(0)TOP↑

「ろ」のみかか変換はバックスラッシュ(円記号)だったりアンダーバーだったり、固める人によって違うみたいだよ。
キーボードや OS に依存するのかな?

そんだけ(*´ω`*)


03/23|ネットコメント(0)トラックバック(0)TOP↑

※このエントリは、あなたがこれを読んでいる時点ですでに解消されているかもしれない問題について書かれています。

何の話かというと Finder の項目名です。このエントリを書いている2006年3月22日の時点で、OS X 10.4.5 上で動作している AppleScript は Finder 項目名のひらがなとカタカナを区別しません。

論より証拠ということで実際やってもらった方がいいでしょう。
まずデスクトップにひらがなで「てすと」という名前のフォルダを作ってください。
つぎに今作った「てすと」フォルダを Finder 上で選択してから、以下のスクリプトを実行してみてください。

tell application "Finder"
set theItem to (item 1 of (selection as list))
if (name of theItem) is "テスト" then
display dialog "この項目の名前は「テスト」です。"
else
display dialog "この項目の名前は「テスト」ではありません。"
end if
end tell

kana.jpg
こうなります。
アルファベットの大文字小文字の違いと、日本語のひらがなカタカナの違いを開発者が混同しているのではないかと思います。

次のスクリプトはデスクトップに「テスト」という名前のフォルダがあれば「テスト 2」というフォルダを作る。「テスト」「テスト 2」というフォルダがあれば「テスト 3」というフォルダを、というように「名前+半角スペース+番号」という名前をつけていくものですが、デスクトップに「テスト」というフォルダがなくても「てすと」というフォルダがあると最初に作成されるフォルダ名は「テスト 2」になってしまいます。

tell application "Finder"
if not (exists folder "テスト" of (path to desktop folder)) then
make new folder at (path to desktop folder) with properties {name:"テスト"}
else
set curNum to 2
repeat
if not (exists folder ("テスト " & curNum as text) of (path to desktop folder)) then
make new folder at (path to desktop folder) with properties {name:("テスト " & curNum as text)}
exit repeat
else
set curNum to (curNum + 1)
end if
end repeat
end if
end tell

この現象を考慮しないでいると、気付かずに目的外の項目を移動したり削除してしまう恐れがあります。
デスクトップに「3カラムvs2カラム」というフォルダと「インターネットにからむ犯罪」というフォルダを作成して次のスクリプトを実行し、ゴミ箱を覗いてみてください。

tell application "Finder" to delete (every folder of (path to desktop folder) whose name contains "カラム")

これでは困りますね。

なるべく名前以外の条件で項目を判別するように心がければ良いのですが、どうしても名前で、という場面もあるかと思います。
対処として URL of を使う方法を考えてみました。
最初のスクリプトを以下のように書き換えてみます。

tell application "Finder"
set theItem to (item 1 of (selection as list))
set theURL to (URL of theItem)
set encodedItemName to (do shell script "basename " & (quoted form of theURL))
if encodedItemName is "%E3%83%86%E3%82%B9%E3%83%88" then
display dialog "この項目の名前は「テスト」です。"
else
display dialog "この項目の名前は「テスト」ではありません。"
end if
end tell

選択項目の名前を URL エンコードした結果が「%E3%83%86%E3%82%B9%E3%83%88」であれば「テスト」である、そうでなければ「テスト」でない、という判別の仕方です。これで「テスト」と「てすと」を区別させることができるはずです。
この方法を使う場合、対象となる名前がたとえば「テスト」なら、「テスト」をエンコードした文字列が「%E3%83%86%E3%82%B9%E3%83%88」であることをあらかじめ知っておく必要があります。エンコードされた文字列を取得する方法は色々ありますが、今回は「テスト」というフォルダを作って選択状態にし、

tell application "Finder" to set x to URL of (item 1 of (selection as list))
do shell script "basename " & quoted form of x

で取得しました。
basename というのはスラッシュ区切りのパス文字列から項目の名前だけを取り出すコマンドだそうです。

また、上記以外の方法でエンコードする場合は、Finder から AppleScript を用いて取得した項目名が iconv でいうところの UTF-8-MAC つまり濁点・半濁点が仮名と分離して一文字として扱われている状態であること、URL of で取得できるのがそういう文字列をエンコードした値であること、などに留意する必要があると思います。

おまけ:
ガチャコンX のカプセルをオモチャの名前にリネーム


追記:
エンコードなんかしなくても取得した文字列を as text すればいいみたいです。

tell application "Finder"
set theItem to (item 1 of (selection as list))
if (name of theItem) as text is "テスト" then
display dialog "この項目の名前は「テスト」です。"
else
display dialog "この項目の名前は「テスト」ではありません。"
end if
end tell

ただし、as Unicode text とするとやっぱりだめorz

tell application "Finder"
set theItem to (item 1 of (selection as list))
if (name of theItem) as Unicode text is "テスト" then
display dialog "この項目の名前は「テスト」です。"
else
display dialog "この項目の名前は「テスト」ではありません。"
end if
end tell


さらに追記:
うああやっぱだめだ!

tell application "Finder"
set x to "テスト" as text
exists folder x of (path to desktop folder)
end tell


さらにさらに追記:
しょうがないので代替案。

exists folder ~ の代替
デスクトップ直下に「ボート」を含む名前のフォルダがあれば true、なければ false を返す。

tell application "Finder" to set theFolder to (path to desktop folder)
set theWord to (do shell script "echo \"*ボート*\" | iconv -f UTF-8 -t UTF-8-MAC")
(do shell script "find " & quoted form of POSIX path of theFolder & " -name " & (quoted form of theWord) & " -type d -maxdepth 1") is not ""

every folder of ~ whose name contains ~ の代替
デスクトップ直下で名前に「ボート」を含む名前のフォルダをゴミ箱へ移動。(円記号をバックスラッシュに直さないと実行できません。)

tell application "Finder" to set theFolder to (path to desktop folder)
set theWord to (do shell script "echo \"*ボート*\" | iconv -f UTF-8 -t UTF-8-MAC")
do shell script "find " & quoted form of POSIX path of theFolder & " -name " & (quoted form of theWord) & " -type d -maxdepth 1 -exec mv {} ~/.Trash \\;"


追記2006-07-22:
コメント欄でご指摘をいただきました。

if (name of theItem) is "テスト" then

のかわりに

if (name of theItem) is in "テスト" then

と書いた場合は、ひらがなとカタカナを正しく区別してくれるようです。

ただ、これだけだと「テ」「テス」という項目名も真になってしまうので、教えていただいたスクリプトを一部改変してみます。

tell application "Finder"
set theItem to (item 1 of (selection as list))
set bool1 to ((name of theItem) is in "テスト")
--文字列"テスト"の中に項目名が含まれていれば真
set bool2 to ("テスト" is in (name of theItem))
--項目名の中に文字列"テスト"が含まれていれば真
if {bool1, bool2} = {true, true} then --両方とも真なら
return "この項目の名前は「テスト」です。"
else
return "この項目の名前は「テスト」ではありません。"
end if
end tell

おおっ、なんかいいっぽい。
教えてくださった t.b.d.w さんに感謝です。ありがとうございました^^

("管理人のみ閲覧"モードでコメントをいただいたのでお名前は伏せましたが、名前を掲載しても差し支えなければその旨ご連絡ください<(_ _)>)


追記2006-11-03
あれ、もしかすると is in を使うなら {"テスト"} のようにリストにして

tell application "Finder"
set theItem to (item 1 of (selection as list))
if (name of theItem) is in {"テスト"} then
return "この項目の名前は「テスト」です。"
else
return "この項目の名前は「テスト」ではありません。"
end if
end tell


でいいのかも。
よくわからなくなってきました。


03/22|AppleScriptコメント(6)トラックバック(0)TOP↑

というか Finder は標準でそういうことができます。
ただ、ウインドウを広げたりアイコンサイズを変更したりといった調節がわずらわしいので、そのへんを AppleScript にやってもらおう、というものです。

kuriyama_folder1a.jpg
これを……

kuriyama_folder2.jpg
こんな感じに

--画像が入ったフォルダを選択して実行。

tell application "Finder"
activate
set theFolder to target of window 1
set theWindow to make new Finder window
set target of theWindow to (theFolder as alias)

--set toolbar visible of theWindow to false
--ツールバー、サイドバーを隠す。

set bounds of theWindow to {8, 46, 832, 609}
--{}内の最初の2つの数値はウインドウの左上隅の座標、後の2つは右下隅の座標。
--数値を書き換えれば自分のディスプレイに合わせたサイズにできる。

set current view of theWindow to icon view
set (shows icon preview of icon view options of theWindow) to true

set (icon size of icon view options of theWindow) to 128
--アイコンサイズ (最大は128)
end tell

追記:
「画像が入ったフォルダを選択して」というのは少々語弊があります。カラム表示ならそのままで通じるのですが、アイコン表示やリスト表示の場合、「画像が入ったフォルダを開いた状態にして」というのが正しいです。
つまり「最前面のウインドウのタイトル」=「開きたい画像フォルダの名前」になっている必要があるということです。なんだかわかりにくいですね^^;

注意:
このスクリプトを実行したときに Finder がウインドウサイズを記憶しない(次回に手動で新規ウインドウを開いたときは普段の大きさで開くことができる)ことは確認していたのですが、 残念ながらアイコンサイズは記憶されてしまうようです。
ふだんアイコン表示にしている人は、元に戻すのにいちいち「表示オプション」を開かなければいけないので、へたに実行しない方がよさそう。

おまけ:
上のスクリプトで開いたウインドウを、普段のウインドウ設定にするスクリプト。
完全に設定を再現するのではなく、アイコンサイズ・アイコンプレビューの表示・ウインドウの大きさ・ウインドウの表示形式(カラム表示とか)のみです。

property iconSize : {}
property showsIcon : {}
property windowBounds : {}
property currentView : {}

tell application "Finder"
activate
if iconSize is {} then
display dialog "前面にある Finder ウインドウの" & return & return & "アイコンの大きさ" & return & "アイコンプレビューの表示" & return & "ウインドウの大きさ" & return & "ウインドウの表示形式" & return & return & "の設定を記憶します。"
set iconSize to (icon size of icon view options of Finder window 1)
set showsIcon to (shows icon preview of icon view options of Finder window 1)
set windowBounds to (bounds of Finder window 1)
set currentView to (current view of Finder window 1)
display dialog "記憶しました" buttons {"OK"} default button 1 giving up after 2
else
set windowPosition to (position of Finder window 1)
set icon size of icon view options of Finder window 1 to iconSize
set shows icon preview of icon view options of Finder window 1 to showsIcon
set bounds of Finder window 1 to windowBounds
set current view of Finder window 1 to currentView

set position of Finder window 1 to windowPosition
end if
end tell


まず、普段使っているウインドウを前面に出しておいて実行すると、その設定を記憶します。次回以降の実行で前面のウインドウが、記憶させておいた「いつものウインドウ」になります。意図しない設定を記憶させてしまったときはスクリプトエディタ上でファイルを開き、保存し直せば値が初期値に戻ります(たぶん)。property の使い方というのがいまいちよくわからなくて、検索してみると OS X では値が記憶されないなんて書いてあるサイトもあるのですが、たぶん OS X 10.4.5 上では大丈夫です。また、スクリプトエディタ上で実行して記憶した値はスクリプトメニューから実行したときには継承されないようなので、エディタ上では実行できないようにしています。 (勘違いでした。実行後に ⌘S で保存を行えば値は保持されます。
参考: 属性の保存先 (「AppleScript の属性 (property) っつうのがわからないので色々やってみた」の MeSH さんのコメント)

これと最初のを組み合わせて、実行するたびにウインドウの表示を切り替えるスクリプト、というのもいいかなと思いますが、サムネイルを見ながらファイルの移動をしたい、というのがそもそもの動機なので、目的のフォルダを新規ウインドウとして開くほうが個人的には扱いやすいです。(画像を確認しながら削除できるビューアはたくさんあるけど、フォルダ間を移動できるのがあまりないんですよね、なぜだろう。PhotoPathfinder ぐらい?)


03/22|AppleScriptコメント(0)トラックバック(0)TOP↑

del.icio.us/help/linkrolls

使ってみました。
このブログの別カラム下部に新着15件のブックマークがずらずらっと表示されてるはず。

FC2ブログは EUC-JP なせいか、script 要素の属性として charset="UTF-8" と書き加えてやらないと文字化けするみたい。(もしかしたら使ってる Web ブラウザにもよるかも。Safari では化けました。)

追記: del.icio.us が重くてブックマークの読み込みが遅いとページ全体の表示に時間がかかるようなので、しばらくしたら外すかもしれません。


03/20|ネットコメント(0)トラックバック(0)TOP↑

選択テキストをサービスメニュー経由で goo 辞書検索できる便利なフリーウェア gooDict が 2.2 になって AppleScript に対応したので、以前書いたスクリプトを修正しました。
Finder 上で選択された項目の名前を検索語句にすることもできます。

サービスメニュー非対応のアプリから gooDict を利用する [英和] [日本語] [和英]
(2006年3月17日追記: クリップボードが空だとエラーになるので修正しました。)

おまけ
gooDict の検索結果を標準テキスト書類として書き出す
("/Applications/AppleScript/AppleScript ユーティリティ" の設定で「GUI スクリプティングを使用可能にする」を有効にしておく必要があります。)


03/15|AppleScriptコメント(0)トラックバック(0)TOP↑

1. まずスクリプトの改行部分を「%0a」に置換します。

スクリプトエディタ上で行う場合はキーボードから改行記号を入力できないので、以下のように改行をコピーして検索置換ウインドウにペーストします。
encode1.png

2. 置換してこんな風になったテキストをコピー
encode3.png

3. Safari のブックマーク編集画面を開いて、option+ドラッグで適当なブックマークを複製。URL の部分に applescript://com.apple.scripteditor?action=new&script= などと入力します。めんどくさかったら http:// でもいいです。
encode4.png

4. 「=」の後ろに先ほどのテキストをペーストし、リターンキーを押せば完了です。勝手にエンコードしてくれます。
さきほど applescript:// で始まる文字列をちゃんと入力していた場合は、ブックマークをダブルクリックしてみてください。

以下、applescript プロトコルと URL エンコーディングに関するリンク

URL PROTOCOL SUPPORT - Apple - Software - AppleScript - Script Editor
アップル謹製エンコード用スクリプト。日本語混じりだとうまくいきません。
Mac Tips X/スクリプトエディタにコピーするタグ
日本語混じりでもOK。リンクとして使うには HTML の charset を UTF-8 にする必要があるそうです。
[教えて!goo] AppleScript(or Perl)でURLエンコードするには?
Perl を使って全ての文字をエンコード。行末に %0a がつくのでデコードするとスクリプトの一番最後にオリジナルにはない改行が入る。Perl の知識がないのでどこを書き換えればこれを回避できるかわかりませんが、結果をパイプで渡して
sed s/%0a$//
とするという手もあります。
追記 (060930): ひどい勘違いをしていました。リンク先のスクリプトはおそらく w の直前のバックスラッシュがクエスチョンマークに化けてしまっています。
AS Publisher - Piyomaru Software
on encodeURL(str) という Python を使っている部分(たぶん)。Perl と同じく知識がないため何をしているかさっぱりですが、「URL に使える文字」以外をきっちりエンコードしてくれる模様。Shift JIS の HTML にも使えます。

AS Publisherを 10.4.x 上で使いたい人のための追記 (060411)

このエントリで紹介している AS Publisher は AppleScript を HTML として書き出した上に applescript プロトコルのリンクまで生成してくれるというものですが、 Mac OS X 10.4.x 上で実行するためには少し工夫が必要です。

まずはバージョン確認のスクリプトを少し書き換えます。
set aVer to version as number
という行を
set aVer to convertString(version as text) of me
とします。つづいてスクリプトの最下部に空改行を入れてから以下を追加。

on convertString(str)
set tmpStr to AppleScript's text item delimiters
set AppleScript's text item delimiters to "."
try
set charList to every text item of str
set curStr to (item 1 of charList) & "."
repeat with i from 2 to (number of items of charList)
set curStr to curStr & (item i of charList)
end repeat
set AppleScript's text item delimiters to tmpStr
return (curStr as number)
on error
set AppleScript's text item delimiters to tmpStr
end try
end convertString

これで実行は可能になりますが、もうひとつ、書き出したファイルが文字化けしてしまうという問題があります。ファイルの文字コードと charset が一致していないというのもあるのでしょうが根本的な原因は判りません^^;

最初は文字列が入った変数を as text すれば Shift_JIS で書き出せるんじゃないかと思いましたがバックスラッシュが化けてしまうんですね。
そういえば 10.3 まではエスケープ文字は円記号でした。
あらかじめバックスラッシュを文字参照に置換してしまうといいのかも。

とりあえず、以下は付け焼き刃的に UTF-16 で書き出すための手順です。

まずスクリプトを「Shift_JIS」で検索して、ヒットした文字列を「UTF-16」に置換します。一箇所しか登場しません。

つぎに
--ファイルの追記ルーチン「write_to_file」
と書いてある場所を探し、
write this_data to the open_target_file starting at eof
という1行を次の3行に置き換えます。

write (ASCII character of 254) to the open_target_file starting at eof
write (ASCII character of 255) to the open_target_file
write this_data to the open_target_file


最初の2行で BOM を付けたことになるのだとか。
Unicode and AppleScript

これで一応は文字化けしない形で書き出せる……のですが、標準で UTF-16 を認識できるはずのテキストエディットでこのファイルを開くことができません。やはり「付け焼き刃」と考えてもらったほうが良さそうです^^


03/13|AppleScriptコメント(5)トラックバック(0)TOP↑

Mac OS X の Tips です。Finder と同じ挙動なので Tips というほどでもないですけど。

iTMS にあるはずのアーティストが検索で引っかからないときなどにブラウズ画面から探すことがありますが、名前が文字コード順(?)に並んでいるため、漢字で始まるアーティスト名を見つけようとすると少々手間取りますよね。

そんなときはまず、アーティストのカラムをクリックしてフォーカスします。 itms_browse1.png

その状態で探したい名前を入力すると、画面下に今時珍しい変換ウインドウが出るので…… itms_browse2.png

変換してリターンキーを押すとそのアーティスト名にジャンプします。一致する名前がない場合は最初の一文字が(文字コード上で)近いアーティストが選択されるようです。 itms_browse3.png

(このエントリここまで。"続きを読む"はありません。)


03/09|Macコメント(0)トラックバック(0)TOP↑

Safari で開いている全ての URL からロケーションファイルを作成

書いていて気付いたのですが、なんと make new internet location file でファイルを作成する場合、同名のファイルがすでにあるときに「with properties で指定したファイル名+半角スペース+数字」にリネームして、エラーが出ないようにしてくれます。普通の make new ~~だとリネーム用のスクリプトを用意しなければならないのですが、勝手にやってくれるのは感動もの。
AppleScript 共通の仕様にしてほしいですね。

(このエントリここまで。"続きを読む"はありません。)


03/08|AppleScriptコメント(0)トラックバック(0)TOP↑

臆峅花ー!

たまに掲示板などで見かけるこの文字。
何かのキャラの名前を突発的に叫んでるのかと思ってたけど、半角カタカナの「イイヨー! (イイヨイイヨー!かも)」が文字化けしたものらしい。
しかし春麗風の髪型に変造チャイナドレスの「臆峅花タン@アニメ絵」を想像して萌えてみたのは俺だけではないはず。

(・∀・)臆峅花ー!

追記

イエーイイエーイーイエーイ → 牡芦牡芦芦完イ
というのも見かけた。

(このエントリここまで。"続きを読む"はありません。)


03/04|ネットコメント(0)トラックバック(0)TOP↑
プロフィール

AquaBowler

  • Author:AquaBowler
  • 現在の Mac 環境:
    iBook Late2001
    Mac OS X 10.4.11
フリーエリア
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
del.icio.us
feed meter

RSS feed meter for http://kotoerisan.blog16.fc2.com/

FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。