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()) –> "英字" –> "ひらがな" –> "カタカナ" |
タグ: 10.12savvy
全国地方公共団体コードのチェックサム算出 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 |
アプリケーションバンドル内のファイルパスを取得する
AppleScript名:アプリケーションバンドル内のファイルパスを取得する |
use AppleScript version "2.4" use scripting additions use framework "Foundation" property |NSURL| : a reference to current application’s |NSURL| property NSFileManager : a reference to current application’s NSFileManager set aRes to getPathsIn_maxfiles_("/Applications/Safari.app", 4096) –> {"/Applications/Safari.app/Contents", "/Applications/Safari.app/Contents/_CodeSignature", "/Applications/Safari.app/Contents/_CodeSignature/CodeResources", …. — Example of file manager directory enumeration on getPathsIn:folderPath maxfiles:MaxNum script spd property aList : {} end script set aList of spd to {} set theNSURL to |NSURL|’s fileURLWithPath:folderPath set theNSFileManager to NSFileManager’s new() — get URL enumerator set theNSFileEnumerator to theNSFileManager’s enumeratorAtURL:theNSURL includingPropertiesForKeys:{} options:0 errorHandler:(missing value) repeat with i from 1 to MaxNum — arbitrary number — get next URL in enumerator set anNSURL to theNSFileEnumerator’s nextObject() if anNSURL is missing value then exit repeat — missing value means there are no more set the end of (aList of spd) to (anNSURL’s |path|() as text) end repeat return (aList of spd) end getPathsIn:maxfiles: |
指定のアプリケーションのInfo.plistの任意の属性値を取得する
AppleScript名:指定のアプリケーションのInfo.plistの任意の属性値を取得する |
— 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 getAppPropertyFromInfoPlist(aP, "NSAppleScriptEnabled") of me –> {appName:"Photos", appBundleID:"com.apple.Photos", urlScheme:{"photos"}} 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 appNameDat to (aDict’s valueForKey:"CFBundleName") as string set bundleIDat to (aDict’s valueForKey:"CFBundleIdentifier") as string set aRes to aDict’s valueForKey:aPropertyLabel if aRes is not equal to missing value then set aRes to aRes as string end if set aRec to {appName:appNameDat, appBundleID:bundleIDat, propRes:aRes} return aRec end getAppPropertyFromInfoPlist |
指定のアプリケーションのInfo.plistのすべての属性値を取得する
AppleScript名:指定のアプリケーションのInfo.plistのすべての属性値を取得する |
— Created 2017-07-23 by Takaaki Naganoya — 2017 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set aP to choose file set aURLrec to getAppAllPropertyFromInfoPlist(aP) of me –> (NSDictionary) {DTCompiler:"com.apple.compilers.llvm.clang.1_0", NSAppleScriptEnabled:"YES", CFBundleInfoDictionaryVersion:"6.0", DTPlatformVersion:"GM", CFBundleIconFile:"Automator.icns", CFBundleName:"Automator", DTSDKName:"macosx10.12internal", NSServices:{{NSMenuItem:{default:"Create Service"}, NSSendTypes:{"NSStringPboardType", "NSFilenamesPboardType"}, … on getAppAllPropertyFromInfoPlist(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() return aDict end getAppAllPropertyFromInfoPlist |