最前面のアプリケーションのAppleScript用語辞書をオープンするAppleScriptです。
macOS標準装備のScript Menuに入れて呼び出すことを前提に作りました。はるかかなた昔に作って、OSバージョンが上がるごとに細かい改修を行なって使い続けているものです。
この手のScriptは日常的にAppleScriptを書いている人間なら、たいてい書いてみたことがあるはずです。しかし、あまり生真面目なアプローチでアプリケーションバンドル中のsdefのパスを求めてオープンといった処理を行っていると、「例外」にブチ当たって困惑します。
sdefファイルを直接持っていないAdobe Creative Cloud製品です。InDesignあたりがそうなんですが、直接sdefを保持しておらず、どうやら実行時に動的に組み立てるようで、絶体パス(absolute path)で指定してもsdefをオープンできません。
また、Microsoft Office系アプリケーションのsdefも、外部の(OS側のsdef)テンプレートをincludeするようなので、生真面目に対象アプリケーションのInfo.plistの情報をもとにアプリケーションバンドル中のsdefファイルをオープンするように処理すると、sdefの一部のみを表示するようになってしまって、sdef全体を表示することができません。
そうしたもろもろの問題に当たって、結局アプリケーションそのものをScript Editorでオープンするように指定しています。
AppleScript名:–このアプリケーションの用語辞書を表示する v4 |
— Created 2017-07-23 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" –最前面のプロセスのファイルパスを取得する set aFile to path to frontmost application set aRec to (getAppPropertyFromInfoPlist(aFile, "NSAppleScriptEnabled") of me) as boolean –スクリプト用語辞書をScript Editorでオープンする手順 if aRec = true then –OS X 10.10でScript Editor側からアプリケーションをオープンしてもダメだったので、Finder側からScript Editorで指定アプリをオープンすることに try tell application "Finder" set apFile to (application file id "com.apple.scripteditor2") as alias open aFile using application file apFile end tell on error tell application id "com.apple.scripteditor2" open aFile end tell end try tell application id "com.apple.scripteditor2" to activate else display dialog "本アプリケーションは、各種OSA言語によるコントロールに対応していません。" buttons {"OK"} default button 1 with icon 2 with title "Scripting非対応" end if on getAppPropertyFromInfoPlist(aP, aPropertyLabel) set aURL to current application’s |NSURL|’s fileURLWithPath:(POSIX path of aP) set aBundle to current application’s NSBundle’s bundleWithURL:aURL set aDict to aBundle’s infoDictionary() set aRes to aDict’s valueForKey:aPropertyLabel if aRes is not equal to missing value then set aRes to aRes as anything end if return aRes end getAppPropertyFromInfoPlist |
More from my site
(Visited 227 times, 1 visits today)