Mavericks の新機能の一つに『タグ』があります。
ファイルやフォルダに付加することができ、OS 全体で利用できます。タグの使い方は「[K]【マニュアル】ファイル管理が超捗る!Appleの新OS『OS X Mavericks』のFinderタグ機能の使い方 - Knowledge Colors」が分かりやすかったです。
Finder にあったラベルが拡張されたようですが、AppleScript からは取得も設定もできないようです。
- 新・OS X ハッキング! (108) 『Mavericksの新コマンド(2)』 | マイナビニュース
- AS Hole(AppleScriptの穴) By Piyomaru Software » 指定のファイルからFinderタグを取得する » Blog Archive
Finder のラベルは AppleScript で操作できるんですが...。
ちょっと調べたところ、NSURL の NSURLTagNamesKey で設定されているタグは取得できるんですね。なら、ASOC ライブラリで作ってしまいましょう。
新しく AppleScript/Objective-C ライブラリスクリプトを作成し、以下のように記述。
property NSURL : class "NSURL"
on tags(thisFile)
(*
タグをリストで取得する
*)
set fileURL to NSURL's fileURLWithPath:thisFile
set dict to fileURL's resourceValuesForKeys:{current application's NSURLTagNamesKey} |error|:(missing value)
set tagList to dict's objectForKey:"NSURLTagNamesKey"
if tagList is missing value then return missing value
return (tagList as list)
end tags
次のようにして呼び出します。
set theFile to choose file
tell script "Tags"
tags(POSIX path of theFile)
end tell
タグがない場合は missing value が返ります。
では、設定はどうでしょうか。
タグの設定は NSURL の setResourceValue:forKey:error: メソッドで NSURLTagNamesKey を指定して設定できます。
on setTags(tagList, thisFile)
(*
現在付けられているタグを上書き
*)
set fileURL to NSURL's fileURLWithPath:thisFile
fileURL's setResourceValue:tagList forKey:(current application's NSURLTagNamesKey) |error|:(missing value)
end setTags
使ってみます。
set theFile to choose file
tell script "Tags"
setTags({"オレンジ", "レッド"}, POSIX path of theFile)
end tell
これもできました...が、既に設定しているタグを上書きするようです。設定しているタグをそのままに、新しく追加するには次のようにします。
on addTags(tagList, thisFile)
(*
現在付けられているタグに追加
*)
set currentTags to tags(thisFile)
if currentTags is missing value then set currentTags to {}
repeat with i from 1 to count tagList
set tag to item i of tagList
if currentTags does not contain tag then
set currentTags to currentTags & tag
end if
end repeat
setTags(currentTags, thisFile)
end addTags
現在のタグに含まれないタグだけを新しいタグのリストから追加しています。これで追加も可能になりました。
ASOC を使ったライブラリですのでちょっと手間がかかりますが、これでタグを自由自在。ま、そのうち AppleScript のみで利用できるようになるのでしょうが、それまでの代替です。
0 件のコメント :
コメントを投稿