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

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

環境:
Mac OS X 10.4.9 (PPC)
OnMyCommand 1.8

こういうやつっすね。

set x to "a"
doTest(x) of me
set y to button returned of result
doTest(y) of me

on doTest(aText)
tell application "Finder"
activate
display dialog aText buttons {"OK"} default button 1
end tell
end doTest


OnMyCommand の前バージョン (1.7.2) でこの手のスクリプトを実行するには別ファイルに書いて run script などでパスを指定する必要があった (うろ覚え。できなかったかも) のですが……

Fixed a problem with AppleScript executor ignoring handlers/subroutines defined after main script (long standing issue).

OnMyCommand - Abracode: Software Alchemy

というわけでバージョンが 1.8 になって、サブルーチンを含んだ AppleScript を OMCEdit から直接記述できるようになったようです。
めでたし。


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

環境: Mac OS X 10.4.9

tell application "Finder"
set windowList to every Finder window
repeat with curWin in windowList
if class of (target of curWin) is not in {folder, item, disk} then
close curWin
end if
end repeat
end tell

外付ハードディスクのスイッチを切ったまま OS を起動したら 10 枚位開いていたウインドウの半分以上が "コンピュータ" (⇧⌘C) になっていた。
Option + Command + W だと全部閉じちゃうし、めんどくせーな。。。
そんなときに使ってます。
every Finder window whose target is computer container
とかは無理ぽい?


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

環境: Mac OS X 10.4.9 (PPC)

たぶんこれでいけます。

set ORC to «data utxtFFFC» as Unicode text
--OBJECT REPLACEMENT CHARACTER

tell application "TextEdit"
if exists front document then
set docContents to (text of front document)
if (ORC is in docContents) then
--OBJECT REPLACEMENT CHARACTER が含まれていれば RTFD
set nameExtension to "rtfd"
else
set nameExtension to "rtf"
end if
--activate
--set filePath to (choose file name default name (short date string of (current date)) & "." & nameExtension)
--save front document in filePath
end if
end tell

追記
添付書類がなくても、テキスト中に OBJECT REPLACEMENT CHARACTER があると、「添付書類がある」と判断してしまうので 100% 確実とは言えないすね。

さらに追記
Growl についてくる AppleScript を眺めていて知ったのですが、"ユニコードでないと表示できない文字"をスクリプト中で扱うためには
«data utxt16進数» as Unicode text
という書き方をすれば良いようです。知らなかった。。。
今まではあらかじめパーセントエンコーディングしておいた文字列をスクリプト中でデコード、というやり方をしていました。

参考:
Basic/値のクラス/Unicode text (AppleScript PARK)

16進数の部分は UnicodeChecker で簡単に調べることができます。

雪だるま
set x to («data utxt2603» as Unicode text)
display dialog x

さらに追記
font of attribute run に missing value が含まれるかで判断した方が確実な気がしてきました。
難しく考えすぎてたみたい。

tell application "TextEdit"
if missing value is in (font of attribute run of front document) then
return "rtfd"
else
return "rtf"
end if
end tell


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

環境:
iBook Late 2001
Mac OS X 10.4.8
FruitMenu 3.6.2b1

自分の環境固有の問題なのか、設定を見落としているのか、仕様なのか不具合なのかはわかりませんが、外付ハードディスクの項目を FruitMenu に登録していると、ログイン直後の Finder ではそれらの項目だけ階層メニューが使えなくなります。登録してある項目そのものをメニューから開くことはできますが、その下の階層に用があるときには不便を感じます。
そこで、FruitMenu Items に項目を追加すると即座にメニューが更新されるという性質を利用して、以下のような AppleScript をアプリケーション形式で保存し、システム環境設定 > アカウント > ログイン項目に登録してみました。

property fruitMenuItemsFolder : {}

on run
try
tell application "Finder"
if (fruitMenuItemsFolder is {}) then
set libraryFolder to (path to library folder from user domain) as Unicode text
set fruitMenuItemsFolder to (libraryFolder & "FruitMenu Items:") as alias
end if
set tmpFolder to (make new folder at fruitMenuItemsFolder) as Unicode text
end tell
tell application "System Events"
delete folder tmpFolder
end tell
on error errMsg
activate
display dialog errMsg buttons {"OK"} default button 1
return
end try
end run

~/Library/Preferences/FruitMenu Items に新規フォルダを作成し、すぐに削除する、というだけのスクリプトなのですが、どうやら目的を果たせているようです。
お好みで LSUIElement を 1 にしておくと鬱陶しくなくてなおよいです。

追記
こんなの見つけました。
Do Something When - Azarhi Software
hopperの技術メモ - DoSomethingWhenの紹介と常駐トラブルの解決
ディスクのマウント/アンマウントを感知してアプリケーションや書類を開くアクションを行うものです。
コンパイル済みスクリプト書類を指定して実行させることはできませんが、アプリケーション形式で保存したものなら「開く」ことができます。


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

環境: Mac OS X 10.4.9 (PPC)

AppleScript で項目がフォルダかどうかを判別する方法はいくつもあると思いますが、言語環境に依存しないのをひとつ。

Finder の選択項目を言語環境に関わらず判別したかったら、kind of ... ではなく class of ... という書き方をしますよね。

tell application "Finder"
set theItem to (item 1 of (selection as list))
if (class of theItem) is folder then
display dialog "folder"
end if
end tell

ところがドロップレットの場合、値が alias のリストで渡されるようで、class of ... の結果は 常に alias となってしまい、フォルダかどうかの判別ができません。

on open dropItems
tell application "Finder"
set theItem to (item 1 of dropItems)
if (class of theItem) is folder then
display dialog "folder"
else if (class of theItem) is alias then
display dialog "alias"
end if
end tell
end open

そんなときはこう書くと良いようです。

on open dropItems
set theItem to (item 1 of dropItems)
tell application "Finder"
if class of ((properties of theItem) as record) is folder then
display dialog "folder"
end if
end tell
end open


as record がミソ。
項目の properties をレコードと明示して、そこから class というラベルの値を取り出している、という考え方でいいんでしょうか。
理屈はよくわかりませんが、とりあえず目的にかなうのでいいっぽい。

追記: コメント欄も見てちょ。


04/11|AppleScriptコメント(2)トラックバック(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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。