AppleScript名:TTS Voice名一覧を取得 |
use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" property NSSpeechSynthesizer : a reference to current application’s NSSpeechSynthesizer set vList to retAvailableTTSnames() of me –> {"Agnes", "Albert", "Alex", "Alice", "Allison", "Alva", "Amelie", "Anna", "Audrey", "Ava", "Bad News", "Bahh", "Bells", "Boing", "Bruce", "Bubbles", "Carmit", "Cellos", "Damayanti", "Daniel", "Deranged", "Diego", "Ellen", "Emily", "Fiona", "Fred", "Good News", "Hysterical", "Ioana", "Jill", "Joana", "Jorge", "Juan", "Junior", "Kanya", "Karen", "Kate", "Kathy", "Kyoko", "Laura", "Lee", "Lekha", "Luca", "Luciana", "Maged", "Mariska", "Mei-Jia", "Melina", "Milena", "Moira", "Monica", "Nora", "Otoya", "Paulina", "Pipe Organ", "Princess", "Ralph", "Samantha", "Sara", "Satu", "Serena", "Sin-ji", "Tessa", "Thomas", "Ting-Ting", "Tom", "Trinoids", "Veena", "Vicki", "Victoria", "Whisper", "Xander", "Yelda", "Yuna", "Yuri", "Zarvox", "Zosia", "Zuzana"} on retAvailableTTSnames() set outList to {} set aList to NSSpeechSynthesizer’s availableVoices() set bList to aList as list repeat with i in bList set j to contents of i set aInfo to (NSSpeechSynthesizer’s attributesForVoice:j) set aInfoRec to aInfo as record set aName to VoiceName of aInfoRec set the end of outList to aName end repeat return outList end retAvailableTTSnames |
月: 2018年2月
InputManagerのじっけん
–> InputManager.framework (To ~/Library/Frameworks)
AppleScript名:InputManagerのじっけん |
— Created 2017-01-22 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "InputManager" set cList to current application’s CSInputSource’s all() –> (NSArray) {(CSInputSource) <CSInputSource: 0x60000000d310>, (CSInputSource) <CSInputSource: 0x60000000f580>, (CSInputSource) <CSInputSource: 0x60000000bd30>, (CSInputSource) <CSInputSource: 0x600000216d20>, (CSInputSource) <CSInputSource: 0x6000002168d0>, (CSInputSource) <CSInputSource: 0x600000216c50>, (CSInputSource) <CSInputSource: 0x600000012620>, (CSInputSource) <CSInputSource: 0x60000000b010>, (CSInputSource) <CSInputSource: 0x600000217010>} set dList to (cList’s valueForKey:"localizedName") as list –> {"ひらがな", "英字", "カタカナ", "日本語", "かなパレット", "com.apple.PressAndHold", "絵文字と記号", "キーボードビューア", "EmojiFunctionRowIM_Extension"} set c1 to (current application’s CSInputSource’s currentKeyboard()’s localizedName()) as string –> "ひらがな" –> "英字" set c2 to (current application’s CSInputSource’s currentKeyboardLayout()’s localizedName()) as string –> "U.S." set err1 to (current application’s CSInputSource’s forLanguage:"ja")’s |select|() log err1 set err2 to (current application’s CSInputSource’s forLanguage:"en_US")’s |select|() log err2 |
IMのメニュー表示名を取得する
AppleScript名:IMのメニュー表示名を取得する |
— Created 2017-01-22 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "InputManager" –https://github.com/jensnockert/input-manager set cList to (current application’s CSInputSource’s all()’s valueForKey:"localizedName") as list –> {"ひらがな", "英字", "カタカナ", "日本語", "かなパレット", "com.apple.PressAndHold", "絵文字と記号", "キーボードビューア", "EmojiFunctionRowIM_Extension"} |
InputMethodで現在選択中のIM名を文字列で取得する
AppleScript名:InputMethodで現在選択中のIM名を文字列で取得する |
— Created 2017-01-22 22:11:33 +0900 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "InputManager" set c2 to (current application’s CSInputSource’s mInputSource()) –> "英字" –> "ひらがな" –> "カタカナ" |
全国地方公共団体コードのチェックサム算出 v2
AppleScript名:全国地方公共団体コードのチェックサム算出 v2 |
set chkSum to chkModulas11("01100") of me
–全国地方公共団体コードのチェックサム算出 on chkModulas11(aCodeNumStr) if length of (aCodeNumStr as string) is not equal to 5 then return false set cList to characters of (aCodeNumStr as string) set aMultNum to 6 set aRes to 0 –第1桁から第5桁までの数字に、それぞれ6.5.4.3.2を乗じて算出した積の和を求め repeat with i in cList set j to i as number set aRes to aRes + j * aMultNum set aMultNum to aMultNum – 1 end repeat if aRes < 11 then –ただし、積の和が11より小なるときは、検査数字は、11から積の和を控除した数字とする set eRes to 11 – aRes else –通常パターン –その和を11で除し、商と剰余(以下「余り数字」という。)を求めて set cRes to aRes mod 11 –余りだけでよいのでは? 商を求めなくても余りは計算可能 set dRes to 11 – cRes set eRes to last character of (dRes as string) –下1桁の数字を検査数字とする end if return eRes as number end chkModulas11 |
JANコードのチェックデジットの計算
AppleScript名:JANコードのチェックデジットの計算 |
set aData to "240469540245" –女性用カジュアルパンプス(黒) set aSum to calcJANcodeChkSum(aData) –> 9 set aData to "978479731648" –「Mac使いへの道」 set aSum to calcJANcodeChkSum(aData) –> 3 –JANコードのチェックデジットの計算 –参照元:http://www.kabukoba.co.jp/info/barcode/check.htm on calcJANcodeChkSum(aData) set aList to characters of aData if length of aList is not equal to 12 then return false set kiSnum to 0 set guNum to 0 repeat with i from 2 to length of aList set kiSuF to ((i – 1) mod 2) set j to (item i of aList) as number if kiSuF = 1 then –奇数 set kiSnum to kiSnum + j else –偶数 set guNum to guNum + j end if end repeat set kiSnum to kiSnum * 3 set guNum to guNum + (first item of aList) as number set totalNum to kiSnum + guNum set totalChar to totalNum as string set lastDig to (last character of totalChar) as number if lastDig is not equal to 0 then set sumNum to 10 – lastDig else set sumNum to 0 end if return sumNum end calcJANcodeChkSum |
keychainLib
オープンソースのSAMKeychainを用いてキーチェーンにアクセスし、指定項目のパスワードの取得、新規項目の作成、キーチェーン項目の検索、アカウントの取得、項目の削除などを行うAppleScriptです。
# Apitoreは2019年5月31日をもってサービスを終了
オープンソースのSAMKeychainをCocoa Framework化したkeychainLib.frameworkをインストールを呼び出しています。
かつて、Mac OS X上にはKeychain ScriptingというAppleScriptから呼び出す専用の補助プログラムがOSに標準装備されていましたが、OS X 10.7で廃止になりました。以後、OS X 10.9までshell commandのsecurityコマンドを呼び出すことが必要となっていましたが、OS X 10.10でAppleScriptがCocoa呼び出しに対応したため、このような使い方ができるようになった次第です。
AppleScript名:keychainLib |
— Created 2016-12-02 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "SSKeychain" –https://github.com/soffes/sskeychain property kSSKeychainServiceName : "SSToolkitTestService" property kSSKeychainAccountName : "SSToolkitTestAccount" property kSSKeychainPassword : "SSToolkitTestPassword" property kSSKeychainLabel : "SSToolkitLabel" set kRes to getPasswordForAccount("apitore API Key", "maro@piyocast.com") of me –> "xxXXXxxX-XxXx-XXXX-xXXX-XXxXXxxXxxXx" –Get Password on getPasswordForAccount(aServiceName as string, anAccount as string) set bQuery to current application’s SSKeychainQuery’s alloc()’s init() bQuery’s setService:aServiceName bQuery’s setAccount:anAccount bQuery’s setPassword:(missing value) set bRes to (bQuery’s fetch:(missing value)) as boolean return (bQuery’s |password|()) as string end getPasswordForAccount — New item on makeNewItem(aPassword as string, aServiceName as string, anAccount as string, aLabel as string) set aQuery to current application’s SSKeychainQuery’s alloc()’s init() aQuery’s setPassword:aPassword aQuery’s setService:aServiceName aQuery’s setAccount:anAccount aQuery’s setLabel:aLabel return (aQuery’s |save|:(missing value)) as boolean end makeNewItem — Look up on lookUpPassWord(aServiceName, anAccount) set bQuery to current application’s SSKeychainQuery’s alloc()’s init() bQuery’s setService:aServiceName bQuery’s setAccount:anAccount bQuery’s setPassword:(missing value) set bRes to (bQuery’s fetch:(missing value)) as boolean return (bQuery’s |password|() ≠ missing value) end lookUpPassWord — Search for all accounts on getAllAccounts() set cQuery to current application’s SSKeychainQuery’s alloc()’s init() return (cQuery’s fetchAll:(missing value)) as list –> (NSArray) {{mdat:(NSDate) 2010-02-23 08:36:19 +0000, cdat:(NSDate) 2010-02-23 08:36:19 +0000, acct:"GoogleJapaneseInput", class:"genp", svce:"GoogleJapaneseInput", labl:"GoogleJapaneseInput", crtr:9999999999}, …… end getAllAccounts — Check accounts for service on getAccount(aServiceName) set cQuery to current application’s SSKeychainQuery’s alloc()’s init() cQuery’s setService:aServiceName return (cQuery’s fetchAll:(missing value)) as list –> (NSArray) {{mdat:(NSDate) 2016-03-02 13:54:54 +0000, cdat:(NSDate) 2016-03-02 13:44:19 +0000, svce:"SSToolkitTestService", acct:"SSToolkitTestAccount", class:"genp", labl:"SSToolkitLabel"}} end getAccount — Delete on deleteKeychain(aServiceName, anAccountName) set dQuery to current application’s SSKeychainQuery’s alloc()’s init() dQuery’s setService:aServiceName dQuery’s setAccount:anAccountName return (dQuery’s deleteItem:(missing value)) as boolean end deleteKeychain –Test Password Object on testPasswordObject() set eQuery to current application’s SSKeychainQuery’s alloc()’s init() eQuery’s setService:kSSKeychainServiceName eQuery’s setAccount:kSSKeychainAccountName set eDic1 to current application’s NSDictionary’s dictionaryWithObjectsAndKeys_(42, "number", "Hello World", "string", missing value) eQuery’s setPasswordObject:eDic1 set fRes to (eQuery’s |save|:(missing value)) as boolean set fQuery to current application’s SSKeychainQuery’s alloc()’s init() fQuery’s setService:kSSKeychainServiceName fQuery’s setAccount:kSSKeychainAccountName fQuery’s setPassword:(missing value) fQuery’s fetch:(missing value) return {fQuery’s passwordObject(), eDic1} –> {(NSDictionary) {number:42, string:"Hello World"}, (NSDictionary) {number:42, string:"Hello World"}} end testPasswordObject |
アプリケーションのBundle IDからアプリのAppleScript対応度を取得する
AppleScript名:アプリケーションのBundle IDからアプリのAppleScript対応度を取得する |
— Created 2016-02-08 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aBundleID to "com.apple.Safari" set aPath to retAppScriptabilityFromBundleID(aBundleID) of me –> true –Bundle IDからアプリケーションのScriptabilityをbooleanで返す on retAppScriptabilityFromBundleID(aBundleID) set appPath to current application’s NSWorkspace’s sharedWorkspace()’s absolutePathForAppBundleWithIdentifier:aBundleID if appPath = missing value then return false set aDict to (current application’s NSBundle’s bundleWithPath:appPath)’s infoDictionary() set aRes to aDict’s valueForKey:"NSAppleScriptEnabled" if aRes = missing value then return false return aRes as boolean end retAppScriptabilityFromBundleID |
アプリケーションのBundle IDからアプリアイコンへのフルパスを取得する
AppleScript名:アプリケーションのBundle IDからアプリアイコンへのフルパスを取得する |
— Created 2016-02-08 by Takaaki Naganoya — 2016 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aBundleID to "com.apple.Safari" set aPath to retAppIconPathFromBundleID(aBundleID) of me –> "/Applications/Safari.app/Contents/Resources/compass.icns" –Bundle IDからアプリケーションアイコンのフルパスをPOSIX pathで返す on retAppIconPathFromBundleID(aBundleID) –Bundle IDからアプリケーションへのパスを取得する set appPath to current application’s NSWorkspace’s sharedWorkspace()’s absolutePathForAppBundleWithIdentifier:aBundleID if appPath = missing value then return false –Info.plistを読み込んで、iconのファイル名を取得 set aDict to (current application’s NSBundle’s bundleWithPath:appPath)’s infoDictionary() set iconFile to aDict’s valueForKey:"CFBundleIconFile" if iconFile = missing value then return false –パスからバンドルを取得して、バンドル内の指定ファイルタイプのファイル名のパスを取得する set aBundle to current application’s NSBundle’s bundleWithPath:appPath set iconFullPath to aBundle’s pathForResource:iconFile ofType:"icns" if iconFullPath = missing value then return false return iconFullPath as string end retAppIconPathFromBundleID |
指定ファイルをオープンするデフォルト・アプリケーションのパスを求める
AppleScript名:指定ファイルをオープンするデフォルト・アプリケーションのパスを求める |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aFile to POSIX path of (choose file) set bPath to getDefaultAppPathFromDocumentPath(aFile) of me –> "/Applications/Skim.app" on getDefaultAppPathFromDocumentPath(aFile) set aURL to current application’s |NSURL|’s fileURLWithPath:aFile set aWorkspace to current application’s NSWorkspace’s sharedWorkspace() set anApp to aWorkspace’s URLForApplicationToOpenURL:aURL if anApp = missing value then return false return (anApp’s |path|()) as string end getDefaultAppPathFromDocumentPath |
指定ファイルをオープンするデフォルト・アプリケーションのBundle IDを求める
AppleScript名:指定ファイルをオープンするデフォルト・アプリケーションのBundle IDを求める |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aFile to POSIX path of (choose file) set anID to getDefaultAppIDFromDocumentPath(aFile) of me –> "com.apple.Preview" on getDefaultAppIDFromDocumentPath(aFile) set aURL to current application’s |NSURL|’s fileURLWithPath:aFile set aWorkspace to current application’s NSWorkspace’s sharedWorkspace() set appURL to aWorkspace’s URLForApplicationToOpenURL:aURL set aBundle to current application’s NSBundle’s bundleWithURL:appURL if aBundle = missing value then return false set anID to aBundle’s bundleIdentifier() return anID as string end getDefaultAppIDFromDocumentPath |
指定のアプリケーションのURL Schemeを取得する
AppleScript名:指定のアプリケーションのURL Schemeを取得する |
— Created 2017-07-23 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use BridgePlus : script "BridgePlus" –http://piyocast.com/as/archives/4759 load framework set aP to choose file set aURLrec to getAppURLSchemes(aP) of me –> {appName:"Photos", appBundleID:"com.apple.Photos", urlScheme:{"photos"}} on getAppURLSchemes(aP) 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 appNameDat to (aDict’s valueForKey:"CFBundleName") as string set bundleIDat to (aDict’s valueForKey:"CFBundleIdentifier") as string set urlSchemes to (aDict’s valueForKey:"CFBundleURLTypes") if urlSchemes is not equal to missing value then set urlList to urlSchemes’s valueForKey:"CFBundleURLSchemes" set urlListFlat to (current application’s SMSForder’s arrayByFlattening:urlList) as list else set urlListFlat to {} end if set aRec to {appName:appNameDat, appBundleID:bundleIDat, urlScheme:urlListFlat} return aRec end getAppURLSchemes |
Bundle IDで指定したアプリケーションのURL Schemeを求める
AppleScript名:Bundle IDで指定したアプリケーションのURL Schemeを求める |
— Created 2017-07-23 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" use BridgePlus : script "BridgePlus" –https://www.macosxautomation.com/applescript/apps/BridgePlus.html property |NSURL| : a reference to current application’s |NSURL| property NSBundle : a reference to current application’s NSBundle property SMSForder : a reference to current application’s SMSForder load framework set aRes to getURLSchemesFromBundleID("com.apple.Safari") of me –> {appName:"Safari", appBundleID:"com.apple.Safari", urlScheme:{"http", "https", "file"}} on getURLSchemesFromBundleID(aBundleID) set aURL to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false set bPath to (aURL’s |path|()) as string set aURLrec to getAppURLSchemes(bPath) of me return aURLrec end getURLSchemesFromBundleID on getAppURLSchemes(aP) set aURL to |NSURL|’s fileURLWithPath:(POSIX path of aP) set aBundle to NSBundle’s bundleWithURL:aURL set aDict to aBundle’s infoDictionary() set appNameDat to (aDict’s valueForKey:"CFBundleName") as string set bundleIDat to (aDict’s valueForKey:"CFBundleIdentifier") as string set urlSchemes to (aDict’s valueForKey:"CFBundleURLTypes") if urlSchemes is not equal to missing value then set urlList to urlSchemes’s valueForKey:"CFBundleURLSchemes" set urlListFlat to (SMSForder’s arrayByFlattening:urlList) as list else set urlListFlat to {} end if set aRec to {appName:appNameDat, appBundleID:bundleIDat, urlScheme:urlListFlat} return aRec end getAppURLSchemes |
指定バンドルIDのアプリケーションのアイコンへのパスを求める
AppleScript名:指定バンドルIDのアプリケーションのアイコンへのパスを求める |
— Created 2017-02-14 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" –http://piyocast.com/as/archives/4460 set iconList to {"com.barebones.bbedit", "com.barebones.textwrangler", "com.apple.Finder"} repeat with i in iconList set aPath to retIconPath(i) of me if aPath is not equal to false then display dialog "ICNS test" with title i with icon ((POSIX file aPath) as alias) buttons {"OK"} default button 1 end if end repeat –指定バンドルIDのアプリケーションのアイコンのフルパスを取得する on retIconPath(anID) set aRes to chkAppIsInstalled(anID) of me if aRes = false then return false set appPathPOSIX to (current application’s NSWorkspace’s sharedWorkspace()’s absolutePathForAppBundleWithIdentifier:anID) as string set anIconPath to getIconFilePath(appPathPOSIX) of me return anIconPath end retIconPath –指定バンドルIDのアプリケーションが存在しているかチェック on chkAppIsInstalled(aBundleID as string) set aRes to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID set bRes to (aRes is not equal to missing value) return bRes end chkAppIsInstalled –指定ファイルのアイコンのファイルのパスを取得する on getIconFilePath(aPOSIXPath) set anURL to current application’s |NSURL|’s fileURLWithPath:aPOSIXPath set myBundle to current application’s NSBundle’s bundleWithURL:anURL set aBundleID to myBundle’s bundleIdentifier() as text set anIconFileName to (myBundle’s objectForInfoDictionaryKey:"CFBundleIconFile") as string if anIconFileName does not end with ".icns" then set anIconFileName to anIconFileName & ".icns" end if set ifonFileFullPath to aPOSIXPath & "/Contents/Resources/" & anIconFileName return ifonFileFullPath end getIconFilePath |
Bundle IDからアプリケーション名称を取得する
AppleScript名:Bundle IDからアプリケーション名称を取得する |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aBundleID to "com.apple.iWork.Keynote2" set aRes to retNameFromBundleID(aBundleID) of me –> "Keynote" on retNameFromBundleID(aBundleID) set aURL to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false –Error set aBundle to current application’s NSBundle’s bundleWithURL:aURL set aName to aBundle’s objectForInfoDictionaryKey:(current application’s kCFBundleExecutableKey) return aName as string end retNameFromBundleID |
Bundle IDからアプリケーションのパスを取得する
AppleScript名:Bundle IDからアプリケーションのパスを取得する |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aBundleID to "com.apple.iWork.Keynote" set aRes to retPathFromBundleID(aBundleID) of me –> "/Applications/iWork ’13/Keynote.app" on retPathFromBundleID(aBundleID) set aURL to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false –Error return aURL’s |path|() as string end retPathFromBundleID |
Bundle IDからアプリケーションのURLを取得する
AppleScript名:Bundle IDからアプリケーションのURLを取得する |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aBundleID to "com.apple.iWork.Keynote" set aRes to retURLFromBundleID(aBundleID) of me –> "file:///Applications/iWork%20’13/Keynote.app/" on retURLFromBundleID(aBundleID) set aURL to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false –Error return aURL’s absoluteString() as string end retURLFromBundleID |
指定名称のアプリケーションのBundle IDを求める
AppleScript名:指定名称のアプリケーションのBundle IDを求める |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set anID to getBundleIDFromAppName("Keynote") of me –> "com.apple.iWork.Keynote" on getBundleIDFromAppName(appName) set appPath to POSIX path of (path to application appName) return getBundleIDFromPath(appPath) of me end getBundleIDFromAppName on getBundleIDFromPath(aPOSIXpath) set aURL to current application’s |NSURL|’s fileURLWithPath:aPOSIXpath set aWorkspace to current application’s NSWorkspace’s sharedWorkspace() set appURL to aWorkspace’s URLForApplicationToOpenURL:aURL set aBundle to current application’s NSBundle’s bundleWithURL:appURL set anID to aBundle’s bundleIdentifier() return anID as string end getBundleIDFromPath |
指定パスのアプリケーションのBundle IDを求める
AppleScript名:指定パスのアプリケーションのBundle IDを求める |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" set aFile to POSIX path of (choose file) set anID to getBundleIDFromPath(aFile) of me –> "com.apple.ScriptEditor2" on getBundleIDFromPath(aPOSIXpath) set aURL to current application’s |NSURL|’s fileURLWithPath:aPOSIXpath set aWorkspace to current application’s NSWorkspace’s sharedWorkspace() set appURL to aWorkspace’s URLForApplicationToOpenURL:aURL set aBundle to current application’s NSBundle’s bundleWithURL:appURL set anID to aBundle’s bundleIdentifier() return anID as string end getBundleIDFromPath |
Bundle IDで指定したアプリケーションのローカライズ一覧を取得
AppleScript名:Bundle IDで指定したアプリケーションのローカライズ一覧を取得 |
— Created 2017-11-07 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aRes to getLocalizationsFromBundleID("com.apple.Safari") of me –> {"ar", "Base", "ca", "cs", "da", "de", "el", "en", "es", "es_419", "fi", "fr", "he", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl", "no", "pl", "pt", "pt_PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh_CN", "zh_TW"} set bRes to getLocalizationsFromBundleID("com.apple.iWork.Pages") of me –> {"ar", "Base", "ca", "cs", "da", "de", "el", "en", "es", "fi", "fr", "he", "hr", "hu", "id", "it", "ja", "ko", "ms", "nl", "no", "pl", "pt", "pt_PT", "ro", "ru", "sk", "sv", "th", "tr", "uk", "vi", "zh_CN", "zh_TW"} set cRes to getLocalizationsFromBundleID("com.adobe.Photoshop") of me –> {"cs", "da", "de", "en-GB", "en", "English", "es", "fi", "fr-CA", "fr", "hu", "it", "ja", "ko", "nb", "nl", "no", "pl", "pt", "ru", "sk", "sv", "tr", "uk", "zh-Hans", "zh-Hant"} set dRes to getLocalizationsFromBundleID("com.adobe.InDesign") of me –> {"cs", "da", "de", "el", "en", "en_GB", "English", "es", "fi", "fr", "hu", "it", "ja", "ko", "nb", "nl", "pl", "pt", "ro", "ru", "sq", "sv", "tr", "uk", "zh_CN", "zh_TW"} set eRes to getLocalizationsFromBundleID("com.adobe.Illustrator") of me –> {"cs", "da", "de", "el", "en", "es", "fi", "fr", "hu", "it", "ja", "ko", "nl", "no", "pl", "pt", "ro", "ru", "sv", "tr", "uk", "zh_CN", "zh_TW"} on getLocalizationsFromBundleID(aBundleID) set aRes to retPathFromBundleID(aBundleID) of me if aRes = false then error "Wrong Bundle ID." return getSpecifiedAppFilesLocalizationListWithDuplication(aRes) of me end getLocalizationsFromBundleID –指定アプリケーションファイルの、指定Localeにおけるローカライズ言語リストを求める。重複を許容 on getSpecifiedAppFilesLocalizationListWithDuplication(appPOSIXpath) set aURL to (current application’s |NSURL|’s fileURLWithPath:appPOSIXpath) set aBundle to current application’s NSBundle’s bundleWithURL:aURL set locList to aBundle’s localizations() return locList as list end getSpecifiedAppFilesLocalizationListWithDuplication on retPathFromBundleID(aBundleID) set aURL to current application’s NSWorkspace’s sharedWorkspace()’s URLForApplicationWithBundleIdentifier:aBundleID if aURL = missing value then return false –Error return aURL’s |path|() as string end retPathFromBundleID |