拡張子でUTIを指定しつつchoose file of type

choose fileコマンドを拡張して、選択対象をUTIではなくファイル拡張子で指定できるようにしたAppleScriptです。

もともと、Classic Mac OSの時代からファイルのタイプを指し示す識別子としてFile Type(”PICT”とか”MooV”とか)が存在していましたが、OS X 10.6あたりで廃止になり、ウヤムヤのまま部分的に延命してきたものの、macOS 10.13でファイルシステムにAPFSを採用(File Typeなどの情報がFile System上に存在しない)したことにより、完全に使用不能になりました。

ファイルの区別に利用してきた情報としては、File type以外にも、

 拡張子(複数の書き方をすることがある。.jpgとか.jpegとか)
 ファイルkind(ローカライズされている)
 type identifier(UTIのこと)

が存在しています。

「すべての画像」「プレーンテキスト全般」といったざっくりとした指定が可能なUTIは、AppleScript側にあまり機能が解放されておらず、あまり利用できていなかったのですが、macOS 10.10でCocoaの機能が利用できるようになってからはUTIの利用もすすんできました。

ただ、それなりに調べる作業も必要だったり、ツールを併用する必要もあったりするので、ファイル拡張子からUTIをScriptで調べて指定できたほうが便利な場合もあるのでは? と考え、このようなルーチン(+命令拡張)を書いてみたものです。

AppleScript名:拡張子でUTIを指定しつつchoose file of type
— Created 2018-1-20 by Takaaki Naganoya
— 2018 Piyomaru Software
use AppleScript version "2.4"
use framework "Foundation"
use scripting additions
use BridgePlus : script "BridgePlus" –https://www.macosxautomation.com/applescript/apps/BridgePlus.html

set aFile to choose file of type {"jpg", "png"} with prompt "This is a message"
set bFile to choose file of type {"scpt", "scptd"} with prompt "With default locaion" default location (path to desktop)

on choose file of type extList with prompt aMes as string : "" default location aLoc : missing value
  set utiList to {}
  
repeat with i in extList
    set the end of utiList to retFileFormatUTI(i) of me
  end repeat
  
if aLoc = missing value then
    continue choose file of type utiList with prompt aMes
  else
    continue choose file of type utiList with prompt aMes default location aLoc
  end if
end choose file

on retFileFormatUTI(aExt as string)
  load framework
  
return (current application’s SMSForder’s UTIForExtension:aExt) as string
end retFileFormatUTI

★Click Here to Open This Script 

Please follow and like us:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です