AppleScriptで使用するファイルパスには、alias(hfs形式)、file(hfs形式)、POSIX path形式(shell commandとのやりとりに使う)、URL形式(ほとんど使わないがごくまれに)などがありますが、macOS 10.10以降はCocoaのオブジェクトを扱えるようになったので、Cocoaオブジェクトとの間でも変換する必要が出てきました。
CocoaもPath形式にPOSIX path(NSString)、URL(NSURL)という複数のパス表現形式があり、AppleScript側のファイルパス情報と相互変換する必要があります。相互変換が一発でできれば楽ですが、たとえばaliasならalias→POSIX path→CocoaのNSStringのpathと2段階で変換する必要があります。
難しいかといわれれば、別に慣れればそんなもんでしょう。技術的な難易度はそれほど高くありません。こうした全体像を知っているかどうか、ということがキーです。
AppleScript名:ファイルパスの変換(Alias→POSIX path→NSURL→POSIX path→file→Alias) |
— Created 2016-02-19 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" –Get Alias (AppleScript native file path format) set anAlias to choose file –> alias "Macintosh HD:Users:me:Documents:……" –Get POSIX path from Alias set aPOSIX to POSIX path of anAlias –> "/Users/me/Documents/……" –Get NSURL from POSIX path set aURL to current application’s |NSURL|’s fileURLWithPath:aPOSIX –> (NSURL) file:///Users/me/Documents/………%83%88%EF%BC%92.scptd/ –Get NSURL string set bPath to aURL’s absoluteString() –> (NSString) "file:///Users/me/Documents/A….9C%EF%BC%89.scptd/" –Get file path (POSIX path) NSString set cPath to aURL’s |path|() –> (NSString) "/Users/me/Documents/……scptd" –Get POSIX file path string from NSString set dPath to cPath as string –> "/Users/me/Documents/……..scptd" –Get file from POSIX path set aFile to POSIX file dPath –> file "Macintosh HD:Users:me:Documents:….scptd" –Get Alias from file set bAlias to aFile as alias –> alias "Macintosh HD:Users:me:Documents:….scptd" |
More from my site
(Visited 1,859 times, 5 visits today)