指定名称のアプリケーションのヘルプブック内で指定アンカーを表示するAppleScriptです。
HelpBookを表示するOS標準搭載アプリケーション「HelpViewer」は一応AppleScript対応のスクリプタブルなアプリケーションなので、AppleScriptからコントロールできるのですが、経験上あまり信頼性がない(コマンドを無視して、表示しないことがある)ので、Cocoa経由でアンカー指定表示を行わせてみました。
Cocoa経由でもすぐに応答は返ってこないのですが、(HelpViewerの起動を含めて)数秒待たされて結果が表示される感じです。
HelpBookは、いわば「フローティング表示する、おそいWebブラウザ」で、かつてはWebコンテンツ内からAppleScriptの実行も指定できたため、一時期「Mac OS Xで有名なセキュリティーホール」として注目を集めました。URLイベント経由でScriptの実行を指定できてしまうとか、便利ではあったもののセキュリティーホールと言われればセキュリティホールです(注:すぐにふさがれました & この前後からローカルでのURLプロトコルの監視がきつくなりました)。
AppleScript名:指定アプリケーションのヘルプブック内の指定アンカーを表示する |
— Created 2017-04-18 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set anAppName to "Script Editor" set aTargAnchor to "scpedt1126" —-https://help.apple.com/scripteditor/mac/10.12/index.html?localePath=ja.lproj#/scpedt1126 set hRes to openHelpBook(anAppName, aTargAnchor) of me –指定アプリケーションのヘルプブックで、指定アンカーを表示する on openHelpBook(anAppName, aTargAnchor) set locBookName to getHelpBook(anAppName) of me if locBookName = false then return false current application’s NSHelpManager’s sharedHelpManager()’s openHelpAnchor:aTargAnchor inBook:locBookName end openHelpBook –指定アプリケーションのヘルプブック名称を取得する on getHelpBook(anAppName) set aWorkspace to current application’s NSWorkspace’s sharedWorkspace() set appPath to aWorkspace’s fullPathForApplication:anAppName if appPath is equal to missing value then return false set locBookName to (current application’s NSBundle’s bundleWithPath:appPath)’s objectForInfoDictionaryKey:"CFBundleHelpBookName" if locBookName is equal to missing value then return false –> "com.apple.ScriptEditor.help" return locBookName end getHelpBook |
AppleScript名:help_sample |
tell application "HelpViewer" activate try lookup anchor "scpedt1126" in book "com.apple.ScriptEditor.help" end try end tell |