Finder

[Finder]エイリアスの参照元の取得

シンボリックリンクは取得できない
AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006
007#シンボリックリンク
008set strFilePath to ("/Library/Fonts/Arial Unicode.ttf") as text
009
010tell application "Finder"
011  try
012    set aliasFilePath to (POSIX file strFilePath) as alias
013    set aliasResolvedPath to (original item of aliasFilePath) as alias
014  on error
015    log "参照先がすでに削除済かシンボリックリンクです"
016  end try
017end tell
018
019#参照先のないシンボリックリンク
020set strFilePath to ("/.VolumeIcon.icns") as text
021
022tell application "Finder"
023  try
024    set aliasFilePath to (POSIX file strFilePath) as alias
025    set aliasResolvedPath to (original item of aliasFilePath) as alias
026  on error
027    log "参照先がすでに削除済かシンボリックリンクです"
028  end try
029end tell
030
031
032
033set strFilePath to ("/Users/some/Desktop/someエイリアス") as text
034
035tell application "Finder"
036  try
037    set aliasFilePath to (POSIX file strFilePath) as alias
038    set aliasResolvedPath to (original item of aliasFilePath) as alias
039  on error
040    display alert "参照先がすでに削除済かシンボリックリンクです"
041  end try
042end tell
AppleScriptで生成しました

|

[Finder] デスクトップのファイルやフォルダの位置を保存 復帰 (少し手直し)

過去のポジションをバックアップ取るようにして
過去のポジションを復帰させられるようにした
位置にに変更がない場合にエラーになる不具合を修正した


ダウンロード - saveandrestore.zip



ポジションを保存
AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# デスクトップポジション保存
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013########################################
014####前処理 ファイルとパス
015########################################
016set appFileManager to refMe's NSFileManager's defaultManager()
017##設定ファイル保存先
018set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationSupportDirectory) inDomains:(refMe's NSUserDomainMask))
019set ocidApplicatioocidupportDirPathURL to ocidURLsArray's firstObject()
020set ocidSaveDirPathURL to ocidApplicatioocidupportDirPathURL's URLByAppendingPathComponent:("com.cocolog-nifty.quicktimer/Desktop Position") isDirectory:(true)
021#フォルダの有無チェック
022set ocidSaveDirPath to ocidSaveDirPathURL's |path|()
023set boolDirExists to appFileManager's fileExistsAtPath:(ocidSaveDirPath) isDirectory:(true)
024if boolDirExists = true then
025  log "すでにフォルダはあります"
026else if boolDirExists = false then
027  log "フォルダが無いのでつくります"
028  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
029  ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
030  set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
031  if (item 2 of listDone) ≠ (missing value) then
032    log (item 2 of listDone)'s localizedDescription() as text
033    return "フォルダ作成でエラーしました"
034  end if
035end if
036#設定ファイルの有無チェック
037set ocidPlistPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:("com.apple.finder.desktopposition.plist") isDirectory:(false)
038set ocidPlistPath to ocidPlistPathURL's |path|()
039set boolDirExists to appFileManager's fileExistsAtPath:(ocidPlistPath) isDirectory:(true)
040if boolDirExists = true then
041  log "ファイルがあります"
042else if boolDirExists = false then
043  log "ファイルが無いので空のPLISTを作っておきます"
044  #空のDICT
045  set ocidBlankDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:(0)
046  #キーアーカイブ形式で保存する
047  set listResponse to refMe's NSKeyedArchiver's archivedDataWithRootObject:(ocidBlankDict) requiringSecureCoding:(false) |error| :(reference)
048  set ocidSfl3Data to (item 1 of listResponse)
049  if (item 2 of listResponse) ≠ (missing value) then
050    log (item 2 of listDone)'s localizedDescription() as text
051    return "アーカイブに失敗しました"
052  end if
053  #保存
054  set listDone to ocidSfl3Data's writeToURL:(ocidPlistPathURL) options:0  |error| :(reference)
055  if (item 2 of listDone) ≠ (missing value) then
056    log (item 2 of listDone)'s localizedDescription() as text
057    return "ファイルの保存に失敗しました"
058  end if
059end if
060########################################
061####ポジションファイルバックアップ
062########################################
063set strDateNO to doGetNextDateNo({"yyyyMMddhhmmss", 1}) as string
064set strBackupFileName to ("com.apple.finder.desktopposition." & strDateNO & ".plist")
065set ocidBackUpPathURL to ocidSaveDirPathURL's URLByAppendingPathComponent:(strBackupFileName) isDirectory:(false)
066
067set appFileManager to refMe's NSFileManager's defaultManager()
068set listDone to (appFileManager's copyItemAtURL:(ocidPlistPathURL) toURL:(ocidBackUpPathURL) |error| :(reference))
069
070
071########################################
072####ポジション収集
073########################################
074#ポジションを格納する
075set ocidPositionDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:(0)
076#ボジションの収集
077tell application "Finder"
078  repeat with itemDesktopItem in desktop
079    tell itemDesktopItem
080      #格納するキー
081      set strKey to (name) as text
082      #格納する値
083      set listPosition to (desktop position) as list
084      set strURL to (URL) as text
085    end tell
086    #格納用のArray
087    # set ocidSetValueArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
088    # (ocidSetValueArray's addObject:(listPosition))
089    # (ocidSetValueArray's addObject:(strURL))
090    #格納用のDICT
091    set ocidSetValueDict to (refMe's NSMutableDictionary's alloc()'s initWithCapacity:(0))
092    (ocidSetValueDict's setObject:(listPosition) forKey:("desktop position"))
093    (ocidSetValueDict's setObject:(strURL) forKey:("URL"))
094    #Dictにセット
095    (ocidPositionDict's setObject:(ocidSetValueDict) forKey:(strKey))
096  end repeat
097end tell
098
099########################################
100####保存
101########################################
102#キーアーカイブ形式で保存する
103set listResponse to refMe's NSKeyedArchiver's archivedDataWithRootObject:(ocidPositionDict) requiringSecureCoding:(false) |error| :(reference)
104set ocidSfl3Data to (item 1 of listResponse)
105if (item 2 of listResponse) ≠ (missing value) then
106  log (item 2 of listDone)'s localizedDescription() as text
107  return "アーカイブに失敗しました"
108end if
109#保存
110set listDone to ocidSfl3Data's writeToURL:(ocidPlistPathURL) options:0  |error| :(reference)
111if (item 2 of listDone) ≠ (missing value) then
112  log (item 2 of listDone)'s localizedDescription() as text
113  return "ファイルの保存に失敗しました"
114end if
115
116return "ポジションを保存しました"
117
118
119
120
121################################
122# 明日の日付 doGetDateNo(argDateFormat,argCalendarNO)
123# argCalendarNO 1 NSCalendarIdentifierGregorian 西暦
124# argCalendarNO 2 NSCalendarIdentifierJapanese 和暦
125################################
126to doGetNextDateNo({argDateFormat, argCalendarNO})
127  ##渡された値をテキストで確定させて
128  set strDateFormat to argDateFormat as text
129  set intCalendarNO to argCalendarNO as integer
130  ###日付情報の取得
131  set ocidDate to current application's NSDate's |date|()
132  set ocidIntervalt to current application's NSDate's dateWithTimeIntervalSinceNow:(86400)
133  ###日付のフォーマットを定義(日本語)
134  set ocidFormatterJP to current application's NSDateFormatter's alloc()'s init()
135  ###和暦 西暦 カレンダー分岐
136  if intCalendarNO = 1 then
137    set ocidCalendarID to (current application's NSCalendarIdentifierGregorian)
138  else if intCalendarNO = 2 then
139    set ocidCalendarID to (current application's NSCalendarIdentifierJapanese)
140  else
141    set ocidCalendarID to (current application's NSCalendarIdentifierISO8601)
142  end if
143  set ocidCalendarJP to current application's NSCalendar's alloc()'s initWithCalendarIdentifier:(ocidCalendarID)
144  set ocidTimezoneJP to current application's NSTimeZone's alloc()'s initWithName:("Asia/Tokyo")
145  set ocidLocaleJP to current application's NSLocale's alloc()'s initWithLocaleIdentifier:("ja_JP_POSIX")
146  ###設定
147  ocidFormatterJP's setTimeZone:(ocidTimezoneJP)
148  ocidFormatterJP's setLocale:(ocidLocaleJP)
149  ocidFormatterJP's setCalendar:(ocidCalendarJP)
150  # ocidFormatterJP's setDateStyle:(current application's NSDateFormatterNoStyle)
151  # ocidFormatterJP's setDateStyle:(current application's NSDateFormatterShortStyle)
152  # ocidFormatterJP's setDateStyle:(current application's NSDateFormatterMediumStyle)
153  # ocidFormatterJP's setDateStyle:(current application's NSDateFormatterLongStyle)
154  ocidFormatterJP's setDateStyle:(current application's NSDateFormatterFullStyle)
155  ###渡された値でフォーマット定義
156  ocidFormatterJP's setDateFormat:(strDateFormat)
157  ###フォーマット適応
158  set ocidDateAndTime to ocidFormatterJP's stringFromDate:(ocidIntervalt)
159  ###テキストで戻す
160  set strDateAndTime to ocidDateAndTime as text
161  return strDateAndTime
162end doGetNextDateNo
163return
AppleScriptで生成しました

復帰
AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# デスクトップポジション復帰
004#com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013########################################
014####前処理 ファイルとパス
015########################################
016set appFileManager to refMe's NSFileManager's defaultManager()
017##設定ファイル保存先
018set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSApplicationSupportDirectory) inDomains:(refMe's NSUserDomainMask))
019set ocidApplicatioocidupportDirPathURL to ocidURLsArray's firstObject()
020set ocidSaveDirPathURL to ocidApplicatioocidupportDirPathURL's URLByAppendingPathComponent:("com.cocolog-nifty.quicktimer/Desktop Position") isDirectory:(true)
021set aliasDefaultLocation to (ocidSaveDirPathURL's absoluteURL()) as alias
022#############################
023###ダイアログを前面に出す
024set strName to (name of current application) as text
025if strName is "osascript" then
026  tell application "Finder" to activate
027else
028  tell current application to activate
029end if
030
031set listUTI to {"com.apple.property-list"} as list
032set strMes to ("ファイルを選んでください") as text
033set strPrompt to ("ファイルを選んでください") as text
034try
035  ### ファイル選択時
036  set aliasFilePath to (choose file strMes with prompt strPrompt default location (aliasDefaultLocation) of type listUTI with invisibles and showing package contents without multiple selections allowed) as alias
037on error
038  log "エラーしました"
039  return "エラーしました"
040end try
041set strFilePath to (POSIX path of aliasFilePath) as text
042set ocidFilePathStr to refMe's NSString's stringWithString:(strFilePath)
043set ocidFilePath to ocidFilePathStr's stringByStandardizingPath()
044set ocidPlistPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidFilePath) isDirectory:false)
045
046
047########################################
048####PLIST読み込み
049########################################
050#データ読み込み DATAとして読み込む
051set ocidOption to (refMe's NSDataReadingMappedIfSafe)
052set listResponse to (refMe's NSData's dataWithContentsOfURL:(ocidPlistPathURL) options:(ocidOption) |error| :(reference))
053if (item 2 of listResponse) ≠ (missing value) then
054  log (item 2 of listResponse)'s localizedDescription() as text
055  return "ファイルのデータ読み込みに失敗しました"
056else if (item 2 of listResponse) = (missing value) then
057  set ocidPlistData to (item 1 of listResponse)
058end if
059#DATAを解凍する
060set ocidClassListArray to (refMe's NSMutableArray's alloc()'s initWithCapacity:(0))
061(ocidClassListArray's addObject:(refMe's NSDictionary))
062(ocidClassListArray's addObject:(refMe's NSMutableDictionary))
063(ocidClassListArray's addObject:(refMe's NSArray))
064(ocidClassListArray's addObject:(refMe's NSMutableArray))
065(ocidClassListArray's addObject:(refMe's NSObject's classForCoder))
066(ocidClassListArray's addObject:(refMe's NSObject's classForKeyedArchiver))
067(ocidClassListArray's addObject:(refMe's NSObject's classForKeyedUnarchiver))
068#クラスセット
069set ocidSetClass to refMe's NSSet's alloc()'s initWithArray:(ocidClassListArray)
070#解凍
071set listResponse to refMe's NSKeyedUnarchiver's unarchivedObjectOfClasses:(ocidSetClass) fromData:(ocidPlistData) |error| :(reference)
072if (item 2 of listResponse) ≠ (missing value) then
073  log (item 2 of listResponse)'s localizedDescription() as text
074  return "データをPLISTに解凍するのに失敗しました"
075else if (item 2 of listResponse) = (missing value) then
076  set ocidPlistDict to (item 1 of listResponse)
077end if
078########################################
079####ポジションデータの処理
080########################################
081set boolDone to missing value
082#ボジションの収集
083tell application "Finder"
084  #デスクトップアイテムを順に処理します
085  repeat with itemDesktopItem in desktop
086    tell itemDesktopItem
087      #キー名を取得して
088      set strKey to (name) as text
089    end tell
090    #読み込んだPLISTからキーで値を取り出して
091    set ocidValueDict to (ocidPlistDict's objectForKey:(strKey))
092    #値が無い場合=保存した時から増えた項目
093    if ocidValueDict = (missing value) then
094      log "ファイル名:" & strKey & " は保存した項目から更新されています"
095      set boolDone to false as boolean
096    else
097      #値が取れたら 実在するかチェックする
098      set strURL to (ocidValueDict's valueForKey:("URL")) as text
099      set ocidChkFilePathURL to (refMe's NSURL's URLWithString:(strURL))
100      set ocidChkFilePathPath to ocidChkFilePathURL's |path|()
101      set boolDirExists to (appFileManager's fileExistsAtPath:(ocidChkFilePathPath) isDirectory:(true))
102      if boolDirExists = true then
103        log "ファイルがあります"
104        #ポジションを直します
105        set listPosition to (ocidValueDict's valueForKey:("desktop position")) as list
106        tell itemDesktopItem
107          #格納するキー
108          set desktop position to (listPosition)
109        end tell
110      else if boolDirExists = false then
111        log "ファイルが無いのでこの項目は処理しません"
112        set boolDone to false as boolean
113      end if
114    end if
115  end repeat
116end tell
117
118
119if boolDone is false then
120  log "保存したポジション情報が古くなっています更新してください"
121  return "保存したポジション情報が古くなっています更新してください"
122else
123  return "処理終了"
124end if
125
126
127
128
AppleScriptで生成しました

|

選択ファイルの拡張子を変更する


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# com.cocolog-nifty.quicktimer.icefloe
004#
005#  同名ファイルに対応
006#
007----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
008use AppleScript version "2.8"
009use scripting additions
010
011
012
013#ファイルなりフォルダなりを選択する
014tell application "Finder"
015  activate
016  set listAliasPath to selection
017end tell
018#ダイアログ
019set strName to (name of current application) as text
020if strName is "osascript" then
021  tell application "Finder" to activate
022else
023  tell current application to activate
024end if
025set aliasIconPath to (POSIX file "/System/Library/CoreServices/Finder.app/Contents/Resources/Finder.icns") as alias
026tell application "Finder"
027  set strDefaultAnswer to (the clipboard as text) as text
028end tell
029
030try
031  set recordResponse to (display dialog "拡張子を入力してください\n『.』カンマ不要" with title "入力してください" default answer strDefaultAnswer buttons {"OK", "キャンセル"} default button "OK" cancel button "キャンセル" with icon aliasIconPath giving up after 30 without hidden answer)
032on error
033  log "エラーしました"
034  return "エラーしました"
035end try
036if true is equal to (gave up of recordResponse) then
037  return "時間切れですやりなおしてください"
038end if
039if "OK" is equal to (button returned of recordResponse) then
040  set strResponse to (text returned of recordResponse) as text
041else
042  log "キャンセルしました"
043  return "キャンセルしました"
044end if
045##改行とタブを削除しておく
046set strDistExtension to doReplace(strResponse, "\n", "")
047set strDistExtension to doReplace(strDistExtension, "\t", "")
048set strDistExtension to doReplace(strDistExtension, " ", "")
049#処理開始
050tell application "Finder"
051  
052  repeat with itemAliasPath in listAliasPath
053    #エイリアスで確定
054    set aliasPath to itemAliasPath as alias
055    #プロパティのレコードを取得して
056    set recordProperties to properties of aliasPath
057    #クラスを取得
058    set classPath to class of recordProperties
059    ##フォルダの場合
060    if classPath is folder then
061      ##フォルダの場合は処理しない
062    else
063      #フォルダでないならファイルだから
064      #元のファイル名
065      set strOrgFileName to name of aliasPath as text
066      #カンマでリストにして
067      set strDelim to AppleScript's text item delimiters
068      set AppleScript's text item delimiters to "."
069      set listFileName to every text item of strOrgFileName
070      set AppleScript's text item delimiters to strDelim
071      set numCntList to (count of listFileName) as integer
072      if numCntList = 1 then
073        set boolNoExtension to true as boolean
074        #拡張子無しファイル
075        set strBaseFileName to (listFileName) as list
076        #移動時のファイル名
077        set strSetFileName to (strBaseFileName & "." & strDistExtension) as text
078      else
079        set boolNoExtension to false as boolean
080        #拡張子を取得して
081        set strExtension to (last item of listFileName) as text
082        #最後の項目を削除
083        set listBaseFileName to (items 1 thru -2 of listFileName) as list
084        #残りの項目をカンマで繋いでベースファイル名      
085        #ファイル名リストの数を数える
086        set numCntList to (count of listBaseFileName) as integer
087        #リストの結合
088        repeat with itemNo from 1 to (numCntList) by 1
089          set itemBaseFileName to (item itemNo of listBaseFileName) as text
090          if itemNo = 1 then
091            set strBaseFileName to (itemBaseFileName) as text
092          else
093            set strBaseFileName to (strBaseFileName & "." & itemBaseFileName) as text
094          end if
095        end repeat
096        #移動時のファイル名
097        set strSetFileName to (strBaseFileName & "." & strDistExtension) as text
098      end if
099      #上位の親フォルダ
100      set aliasContainerDirPath to (container of itemAliasPath) as alias
101      #同名フォルダの有無チェック
102      set booFileChk to (exists of (file strSetFileName of folder aliasContainerDirPath)) as boolean
103      
104      #無ければ
105      if booFileChk is false then
106        #変更して
107        tell itemAliasPath
108          set name to strSetFileName
109        end tell
110      else if booFileChk is true then
111        #最大100まで同名フォルダ処理を行う
112        #同名ファイルがあった場合のカウンタ
113        set numCntNo to 1 as integer
114        set boolDoneChange to false as boolean
115        repeat while boolDoneChange is false
116          #同名がある場合は数字を付与していく
117          set strSetFileName to (strBaseFileName & " " & numCntNo & "." & strDistExtension) as text
118          log strSetFileName
119          #同名フォルダの有無チェック
120          set booFileChk to (exists of (file strSetFileName of folder aliasContainerDirPath)) as boolean
121          log booFileChk
122          #無ければ
123          if booFileChk is false then
124            #変更して
125            tell itemAliasPath
126              set name to strSetFileName
127            end tell
128            #リピートを抜ける
129            set boolDoneChange to true as boolean
130          else
131            #カウントアップ
132            set numCntNo to numCntNo + 1 as integer
133          end if
134          
135        end repeat
136      end if
137      
138      
139    end if
140  end repeat
141end tell
142
143###
144#置換
145to doReplace(argOrignalText, argSearchText, argReplaceText)
146  set strDelim to AppleScript's text item delimiters
147  set AppleScript's text item delimiters to argSearchText
148  set listDelim to every text item of argOrignalText
149  set AppleScript's text item delimiters to argReplaceText
150  set strReturn to listDelim as text
151  set AppleScript's text item delimiters to strDelim
152  return strReturn
153end doReplace
AppleScriptで生成しました

|

[Finder]ゴミ箱へ入れる


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004#
005# com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use framework "AppKit"
010use scripting additions
011
012property refMe : a reference to current application
013
014
015##############################
016#第一階層のみ収集
017set strDirPath to ("~/Pictures/ScreenCapture/SmallExport") as text
018set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
019set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
020set ocidDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:(true)
021set aliasDirPath to (ocidDirPathURL's absoluteURL()) as alias
022
023tell application "Finder"
024  set listAliasFilePath to (every item of aliasDirPath) as list
025end tell
026repeat with itemAliasFilePath in listAliasFilePath
027  tell application "Finder"
028    try
029      ##ゴミ箱へ
030      move itemAliasFilePath to the trash
031    end try
032  end tell
033end repeat
034
035
036##############################
037#第一階層のみ収集
038set strDirPath to ("~/Pictures/ScreenCapture/AutomatorExport") as text
039set ocidDirPathStr to refMe's NSString's stringWithString:(strDirPath)
040set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
041set ocidDirPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:(true)
042set aliasDirPath to (ocidDirPathURL's absoluteURL()) as alias
043
044tell application "Finder"
045  set listAliasFilePath to (every item of aliasDirPath) as list
046end tell
047repeat with itemAliasFilePath in listAliasFilePath
048  tell application "Finder"
049    try
050      ##ゴミ箱へ
051      move itemAliasFilePath to the trash
052    end try
053  end tell
054end repeat
055
056
057
AppleScriptで生成しました

|

Finderに内包されているアプリケーションを開く

ダウンロード - openfinderapp.zip


全てのバンドルは↑ダウンロードしてください
com.apple.finder.Open-AirDrop
com.apple.finder.Open-iCloudDrive
com.apple.finder.Open-Computer
com.apple.finder.Open-Network
com.apple.finder.Open-AllMyFiles
com.apple.finder.Open-Recents


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# com.cocolog-nifty.quicktimer.icefloe
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use framework "UniformTypeIdentifiers"
010use scripting additions
011
012property refMe : a reference to current application
013
014###################################
015#設定項目
016set strBundleID to ("com.apple.finder.Open-Recents") as text
017
018###################################
019#URLを求める
020set ocidAppFilePathURL to doGetBundleID2AppURL(strBundleID)
021if ocidAppFilePathURL = (missing value) then
022  log "バンドルIDからアプリケーションが見つかりませんでした"
023  return "バンドルIDからアプリケーションが見つかりませんでした"
024else
025  set strAppURL to ocidAppFilePathURL's absoluteString() as text
026  ###################################
027  #開く
028  set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
029  set boolDone to appSharedWorkspace's openURL:(ocidAppFilePathURL)
030end if
031
032###################################
033#このスクリプトのURL
034set aliasPathToMe to (path to me) as alias
035set strPathToMePath to (POSIX path of aliasPathToMe) as text
036set ocidPathToMeFilePathStr to refMe's NSString's stringWithString:(strPathToMePath)
037set ocidPathToMeFilePath to ocidPathToMeFilePathStr's stringByStandardizingPath()
038set ocidPathToMeFilePathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidPathToMeFilePath) isDirectory:false)
039
040###################################
041#アイコンパスを求める
042#パス部品
043set ocidAppFileName to ocidAppFilePathURL's lastPathComponent()
044set strBaseAppName to (ocidAppFileName's stringByDeletingPathExtension()) as text
045set strAppFilePath to (ocidAppFilePathURL's |path|()) as text
046##############################
047# アプリケーションのICONファイル名を取得します
048set ocidIconPathURL to doGetAppIconPath(ocidAppFilePathURL)
049if ocidIconPathURL is (missing value) then
050  set ocidIconPathURL to doGetIosAppIconPath(ocidAppFilePathURL)
051  if ocidIconPathURL is (missing value) then
052    log "ICNSがない"
053    ##############################
054    # 保存先フォルダ作成
055    set ocidSaveDirPathURL to doMakeDir(strBaseAppName)
056    if ocidSaveDirPathURL is false then
057      return "フォルダ生成に失敗しました"
058    end if
059    ##############################
060    #CARファイルのURLを取得
061    set ocidCarFilePathURL to doMakeIcnsFile(ocidAppFilePathURL)
062    if ocidCarFilePathURL is false then
063      return "CARファイルのURLの取得に失敗しました"
064    end if
065    
066    ##############################
067    #ファイルのコピー
068    set ocidSaveCarFilePathURL to doFileCopy(ocidCarFilePathURL, ocidSaveDirPathURL)
069    
070    ##############################
071    #ICONSET書き出し
072    set ocidIconPathURL to doMakeIconset(ocidSaveCarFilePathURL)
073    if ocidIconPathURL is false then
074      return "ICNSファイルの生成に失敗しました"
075    end if
076  end if
077end if
078
079
080###################################
081#アイコンを付与する
082#読み込みNSDATA
083set ocidOption to (refMe's NSDataReadingMappedIfSafe)
084set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidIconPathURL) options:(ocidOption) |error| :(reference)
085if (item 2 of listResponse) = (missing value) then
086  log "正常処理"
087  set ocidReadData to (item 1 of listResponse)
088else if (item 2 of listResponse) ≠ (missing value) then
089  log (item 2 of listResponse)'s code() as text
090  log (item 2 of listResponse)'s localizedDescription() as text
091  return "エラーしました"
092end if
093#NSDATAをNSIMAGEに
094set ocidImageData to refMe's NSImage's alloc()'s initWithData:(ocidReadData)
095
096set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
097set ocidPathToMeFilePath to ocidPathToMeFilePathURL's |path|()
098###アイコン付与
099set ocidOption to (refMe's NSExclude10_4ElementsIconCreationOption)
100set boolDone to (appSharedWorkspace's setIcon:(ocidImageData) forFile:(ocidPathToMeFilePath) options:(ocidOption))
101if boolDone is true then
102  log "正常処理"
103else if boolDone is false then
104  return "エラーしました"
105end if
106
107return strAppURL
108
109
110
111
112
113
114##############################
115#ICONSET書き出し
116to doMakeIconset(argCarFilePathURL)
117  set ocidSaveDirPathURL to argCarFilePathURL's URLByAppendingPathExtension:("iconset")
118  #
119  set appFileManager to refMe's NSFileManager's defaultManager()
120  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
121  ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
122  set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
123  if (item 1 of listDone) is true then
124    log "正常処理"
125  else if (item 2 of listDone) ≠ (missing value) then
126    log (item 2 of listDone)'s code() as text
127    log (item 2 of listDone)'s localizedDescription() as text
128    log "エラーしました"
129    return false
130  end if
131  #書き出す
132  set strAssetsCarFilePath to (argCarFilePathURL's |path|()) as text
133  set strIconsetDirPath to (ocidSaveDirPathURL's |path|()) as text
134  try
135    ###AppIcon指定時
136    set strCommandText to ("/usr/bin/iconutil --convert iconset \"" & strAssetsCarFilePath & "\" AppIcon -o \"" & strIconsetDirPath & "\"") as text
137    log strCommandText
138    do shell script strCommandText
139  on error
140    ###システム設定の指定例
141    try
142      set strCommandText to ("/usr/bin/iconutil --convert iconset \"" & strAssetsCarFilePath & "\" PrefApp -o \"" & strIconsetDirPath & "\"") as text
143      log strCommandText
144      do shell script strCommandText
145    on error
146      log "AssetsにAppIconが無いか 特殊なPACK指定されている"
147      return false
148    end try
149  end try
150  #
151  set ocidContainerDirPathURL to argCarFilePathURL's URLByDeletingLastPathComponent()
152  set ocidAppIconFilePathURL to ocidContainerDirPathURL's URLByAppendingPathComponent:("AppIcon.icns") isDirectory:(false)
153  set strAppIconFilePath to (ocidAppIconFilePathURL's |path|()) as text
154  try
155    set strCommandText to ("/usr/bin/iconutil --convert icns  \"" & strIconsetDirPath & "\"  -o \"" & strAppIconFilePath & "\"") as text
156    log strCommandText
157    do shell script strCommandText
158  on error
159    log "AssetsにAppIconが無いか 特殊なPACK指定されている"
160    return false
161  end try
162  return ocidAppIconFilePathURL
163  
164end doMakeIconset
165
166
167##############################
168#ファイルのコピー
169to doFileCopy(argFilePathURL, argDistDirPathURL)
170  set ocidFileName to argFilePathURL's lastPathComponent()
171  set ocidDistFilePathURL to argDistDirPathURL's URLByAppendingPathComponent:(ocidFileName) isDirectory:(false)
172  set appFileManager to refMe's NSFileManager's defaultManager()
173  set listDone to (appFileManager's copyItemAtURL:(argFilePathURL) toURL:(ocidDistFilePathURL) |error| :(reference))
174  if (item 1 of listDone) is true then
175    log "正常処理"
176  else if (item 2 of listDone) ≠ (missing value) then
177    log (item 2 of listDone)'s code() as text
178    log (item 2 of listDone)'s localizedDescription() as text
179    log "エラーしました"
180  end if
181  return ocidDistFilePathURL
182end doFileCopy
183
184###################################
185#Assets.carのファイルの取得
186to doMakeIcnsFile(argAppFileURL)
187  set ocidCarFilePathURL to argAppFileURL's URLByAppendingPathComponent:("WrappedBundle/Assets.car") isDirectory:(false)
188  #あるか?確認
189  set ocidCarFilePath to ocidCarFilePathURL's |path|()
190  set appFileManager to refMe's NSFileManager's defaultManager()
191  set boolFileExists to appFileManager's fileExistsAtPath:(ocidCarFilePath) isDirectory:(false)
192  if boolFileExists is true then
193    #あるので ocidCarFilePathURL がCarファイル
194    return ocidCarFilePathURL
195  else if boolFileExists is false then
196    set ocidCarFilePathURL to argAppFileURL's URLByAppendingPathComponent:("Contents/Resources/Assets.car") isDirectory:(false)
197    set ocidCarFilePath to ocidCarFilePathURL's |path|()
198    set boolFileExists to appFileManager's fileExistsAtPath:(ocidCarFilePath) isDirectory:(false)
199    if boolFileExists is true then
200      #あるので ocidCarFilePathURL がCarファイル
201      return ocidCarFilePathURL
202    else if boolFileExists is false then
203      return false
204    end if
205  end if
206end doMakeIcnsFile
207
208###################################
209#アイコンデータの保存先フォルダを作る
210to doMakeDir(argSubPathStr)
211  set appFileManager to refMe's NSFileManager's defaultManager()
212  set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSPicturesDirectory) inDomains:(refMe's NSUserDomainMask))
213  set ocidPicturesDirPathURL to ocidURLsArray's firstObject()
214  set strSubPath to ("Icons/AppIcon/" & argSubPathStr) as text
215  set ocidSaveDirPathURL to ocidPicturesDirPathURL's URLByAppendingPathComponent:(strSubPath) isDirectory:(true)
216  #アイコンコピー先フォルダを作る
217  set ocidAttrDict to refMe's NSMutableDictionary's alloc()'s initWithCapacity:0
218  ocidAttrDict's setValue:(448) forKey:(refMe's NSFilePosixPermissions)
219  set listDone to appFileManager's createDirectoryAtURL:(ocidSaveDirPathURL) withIntermediateDirectories:true attributes:(ocidAttrDict) |error| :(reference)
220  if (item 1 of listDone) is true then
221    log "正常処理"
222    return ocidSaveDirPathURL
223  else if (item 2 of listDone) ≠ (missing value) then
224    log (item 2 of listDone)'s code() as text
225    log (item 2 of listDone)'s localizedDescription() as text
226    log "エラーしました"
227    return false
228  end if
229end doMakeDir
230
231###################################
232# 通常IOSタイプのアプリケーション
233to doGetIosAppIconPath(argAppFileURL)
234  #PLISTパス
235  set ocidPlistFilePathURL to argAppFileURL's URLByAppendingPathComponent:("WrappedBundle/Info.plist")
236  #NSDATA
237  set ocidOption to (refMe's NSDataReadingMappedIfSafe)
238  set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL) options:(ocidOption) |error| :(reference)
239  if (item 2 of listResponse) = (missing value) then
240    log "正常処理"
241    set ocidPlistData to (item 1 of listResponse)
242  else if (item 2 of listResponse) ≠ (missing value) then
243    log (item 2 of listResponse)'s code() as text
244    log (item 2 of listResponse)'s localizedDescription() as text
245    log "エラーしました"
246    return (missing value)
247  end if
248  #PLIST
249  set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
250  set appSerialization to (refMe's NSPropertyListSerialization)
251  set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves)
252  set listResponse to appSerialization's propertyListWithData:(ocidPlistData) options:(ocidOption) format:(ocidFormat) |error| :(reference)
253  if (item 2 of listResponse) = (missing value) then
254    log "正常処理"
255    set ocidPlistDict to (item 1 of listResponse)
256  else if (item 2 of listResponse) ≠ (missing value) then
257    log (item 2 of listResponse)'s code() as text
258    log (item 2 of listResponse)'s localizedDescription() as text
259    log "エラーしました"
260    return (missing value)
261  end if
262  #アイコンのファイルパスを取得
263  set ocidIconFileName to ocidPlistDict's valueForKey:("CFBundleIconFile")
264  #Iconファイルの指定がない場合
265  if ocidIconFileName = (missing value) then
266    return (missing value)
267  end if
268  #Iconファイルの指定がある場合
269  set boolIcns to (ocidIconFileName's hasSuffix:("icns")) as boolean
270  if boolIcns is true then
271    #拡張子まで指定されている場合
272    set strSubPath to ("Contents/Resources/" & ocidIconFileName) as text
273    set ocidIconFilePathURL to ocidAppFilePathURL's URLByAppendingPathComponent:(strSubPath)
274  else
275    #拡張子指定がない場合は拡張子をつけておく
276    set strSubPath to ("Contents/Resources/" & ocidIconFileName) as text
277    set ocidIconFilePathURL to ocidAppFilePathURL's URLByAppendingPathComponent:(strSubPath)
278    set ocidIconFilePathURL to ocidIconFilePathURL's URLByAppendingPathExtension:("icns")
279  end if
280  return ocidIconFilePathURL
281end doGetIosAppIconPath
282
283###################################
284# 通常MacOSタイプのアプリケーション
285to doGetAppIconPath(argAppFileURL)
286  #PLISTパス
287  set ocidPlistFilePathURL to argAppFileURL's URLByAppendingPathComponent:("Contents/Info.plist")
288  #NSDATA
289  set ocidOption to (refMe's NSDataReadingMappedIfSafe)
290  set listResponse to refMe's NSData's alloc()'s initWithContentsOfURL:(ocidPlistFilePathURL) options:(ocidOption) |error| :(reference)
291  if (item 2 of listResponse) = (missing value) then
292    log "正常処理"
293    set ocidPlistData to (item 1 of listResponse)
294  else if (item 2 of listResponse) ≠ (missing value) then
295    log (item 2 of listResponse)'s code() as text
296    log (item 2 of listResponse)'s localizedDescription() as text
297    log "エラーしました"
298    return (missing value)
299  end if
300  #PLIST
301  set ocidFormat to (refMe's NSPropertyListXMLFormat_v1_0)
302  set appSerialization to (refMe's NSPropertyListSerialization)
303  set ocidOption to (refMe's NSPropertyListMutableContainersAndLeaves)
304  set listResponse to appSerialization's propertyListWithData:(ocidPlistData) options:(ocidOption) format:(ocidFormat) |error| :(reference)
305  if (item 2 of listResponse) = (missing value) then
306    log "正常処理"
307    set ocidPlistDict to (item 1 of listResponse)
308  else if (item 2 of listResponse) ≠ (missing value) then
309    log (item 2 of listResponse)'s code() as text
310    log (item 2 of listResponse)'s localizedDescription() as text
311    log "エラーしました"
312    return (missing value)
313  end if
314  #アイコンのファイルパスを取得
315  set ocidIconFileName to ocidPlistDict's valueForKey:("CFBundleIconFile")
316  #Iconファイルの指定がない場合
317  if ocidIconFileName = (missing value) then
318    return (missing value)
319  end if
320  #Iconファイルの指定がある場合
321  set boolIcns to (ocidIconFileName's hasSuffix:("icns")) as boolean
322  if boolIcns is true then
323    #拡張子まで指定されている場合
324    set strSubPath to ("Contents/Resources/" & ocidIconFileName) as text
325    set ocidIconFilePathURL to argAppFileURL's URLByAppendingPathComponent:(strSubPath)
326  else
327    #拡張子指定がない場合は拡張子をつけておく
328    set strSubPath to ("Contents/Resources/" & ocidIconFileName) as text
329    set ocidIconFilePathURL to argAppFileURL's URLByAppendingPathComponent:(strSubPath)
330    set ocidIconFilePathURL to ocidIconFilePathURL's URLByAppendingPathExtension:("icns")
331  end if
332  return ocidIconFilePathURL
333end doGetAppIconPath
334
335
336###################################
337### バンドルIDからアプリケーションURL
338###################################
339to doGetBundleID2AppURL(argBundleID)
340  set strBundleID to argBundleID as text
341  set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
342  ##バンドルIDからアプリケーションのURLを取得
343  set ocidAppBundle to (refMe's NSBundle's bundleWithIdentifier:(strBundleID))
344  if ocidAppBundle ≠ (missing value) then
345    set ocidAppPathURL to ocidAppBundle's bundleURL()
346  else if ocidAppBundle = (missing value) then
347    set ocidAppPathURL to (appSharedWorkspace's URLForApplicationWithBundleIdentifier:(argBundleID))
348  end if
349  ##予備(アプリケーションのURL)
350  if ocidAppPathURL = (missing value) then
351    tell application "Finder"
352      try
353        set aliasAppApth to (application file id strBundleID) as alias
354        set strAppPath to (POSIX path of aliasAppApth) as text
355        set strAppPathStr to refMe's NSString's stringWithString:(strAppPath)
356        set strAppPath to strAppPathStr's stringByStandardizingPath()
357        set ocidAppPathURL to refMe's NSURL's alloc()'s initFileURLWithPath:(strAppPath) isDirectory:true
358      on error
359        log "アプリケーションが見つかりませんでした"
360        return (missing value)
361      end try
362    end tell
363  end if
364  return ocidAppPathURL
365end doGetBundleID2AppURL
AppleScriptで生成しました

|

[Finder] このMacについてを開く


サンプルコード

サンプルソース(参考)
行番号ソース
001
002##どれでも同じ あとは好みの問題
003
004tell application id "com.apple.AboutThisMacLauncher" to activate
005
006tell application id "com.apple.AboutThisMacLauncher" to launch
007
008do shell script ("/usr/bin/open -b com.apple.AboutThisMacLauncher")
009
010do shell script ("/usr/bin/open -a \"About This Mac\"")
AppleScriptで生成しました


サンプルコード

サンプルソース(参考)
行番号ソース
001
002##システムイベントを使う場合
003
004
005tell application "Finder"
006  tell application "System Events"
007    tell process "Finder"
008      set frontmost to true
009      click menu item "このMacについて" of menu 1 of menu bar item "Apple" of menu bar 1
010    end tell
011  end tell
012end tell
AppleScriptで生成しました


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004#
005----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
006use AppleScript version "2.8"
007use framework "Foundation"
008use framework "AppKit"
009use scripting additions
010
011property refMe : a reference to current application
012
013
014#パス
015set appFileManager to refMe's NSFileManager's defaultManager()
016set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSCoreServiceDirectory) inDomains:(refMe's NSSystemDomainMask))
017set ocidCoreServiceDirPathURL to ocidURLsArray's firstObject()
018set ocidFilePathURL to ocidCoreServiceDirPathURL's URLByAppendingPathComponent:("Applications/About This Mac.app") isDirectory:(true)
019#開く
020set appSharedWorkspace to refMe's NSWorkspace's sharedWorkspace()
021set boolDone to appSharedWorkspace's openURL:(ocidFilePathURL)
022
AppleScriptで生成しました


サンプルコード

サンプルソース(参考)
行番号ソース
001set strFilePath to ("/System/Library/CoreServices/Applications/About This Mac.app") as text
002set aliasFilePath to (POSIX file strFilePath) as alias
003
004tell application "Finder"
005  open file aliasFilePath
006end tell
AppleScriptで生成しました

|

選択しているファイルの移動


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#com.cocolog-nifty.quicktimer.icefloe
004----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
005use AppleScript version "2.8"
006use scripting additions
007
008
009##選択しているファイルを
010tell application "Finder"
011  activate
012  set listAliasFilePath to selection as list
013end tell
014
015##移動先
016set aliasDocumentsDirPath to (path to documents folder from user domain) as alias
017tell application "Finder"
018  set aliasDistDirPath to (folder "移動先フォルダ名" of folder aliasDocumentsDirPath) as alias
019end tell
020
021tell application "Finder"
022  repeat with itemAliasFilePath in listAliasFilePath
023    ##拡張子が txtだったら
024    if (name extension of itemAliasFilePath) is "txt" then
025      ##移動しなさい
026      move itemAliasFilePath to aliasDistDirPath
027    end if
028  end repeat
029end tell
AppleScriptで生成しました

|

Finder Windowの複製(詳細版)


あくまでも参考にしてください

【スクリプトエディタで開く】 |

サンプルソース(参考)
行番号ソース
001#! /usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# 前面Finder Windowの複製 詳細版
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use scripting additions
009
010###ウィンドウの有無チェック
011tell application "Finder"
012  set numCntWindow to (count of every Finder window) as integer
013end tell
014if numCntWindow = 0 then
015  return "保存するウィンドウがありません"
016end if
017# Finder Window 前面のだけ処理する
018tell application "Finder"
019  tell front Finder window
020    set aliasTargetPath to target as alias
021    set listPosition to position as list
022    set listBounds to bounds as list
023    set numSideBarWidth to sidebar width as integer
024    set boolToolBarVisible to toolbar visible as boolean
025    set boolStatusBarVisible to statusbar visible as boolean
026    set boolPathBarVisible to pathbar visible as boolean
027    set boolZoomed to zoomed as boolean
028    set boolCollapsed to collapsed as boolean
029    set constantCurrentView to current view as constant
030  end tell
031  ##オプション分岐
032  if constantCurrentView is column view then
033    tell column view options of front Finder window
034      set numTextSize to text size as integer
035      set boolShowIcon to shows icon as boolean
036      set boolShowsIconPreview to shows icon preview as boolean
037      set boolShowsPreviewColumn to shows preview column as boolean
038      set boolDisClosesPreviewPane to discloses preview pane as boolean
039    end tell
040  else if constantCurrentView is icon view then
041    tell icon view options of front Finder window
042      set constantArrangement to arrangement as constant
043      set constantLabelPosition to label position as constant
044      set listBackgroundColor to background color as list
045      set numTextSize to text size as integer
046      set numIconSize to icon size as integer
047      set boolShowsItemInfo to shows item info as boolean
048      set boolShowsIconPreview to shows icon preview as boolean
049    end tell
050  else if constantCurrentView is list view then
051    tell list view options of front Finder window
052      set constantIconSize to icon size as constant
053      set columnSortColumn to sort column
054      set numTextSize to text size as integer
055      set boolCalculatesFolderSizes to calculates folder sizes as boolean
056      set boolShowsIconPreview to shows icon preview as boolean
057      set boolUsesRelativeDates to uses relative dates as boolean
058    end tell
059  end if
060end tell
061#####################
062#複製
063tell application "Finder"
064  set objNewWindow to (make new Finder window to folder aliasTargetPath)
065  tell objNewWindow
066    #右下方向に20ピクセルつづずらす
067    set numSetX to ((item 1 of listPosition) + 20) as integer
068    set numSetY to ((item 2 of listPosition) + 20) as integer
069    set listSetPosition to {numSetX, numSetY} as list
070    set position to listSetPosition
071    #右下方向に20ピクセルつづずらす
072    set numSetX to ((item 1 of listBounds) + 20) as integer
073    set numSetY to ((item 2 of listBounds) + 20) as integer
074    set numSetW to ((item 3 of listBounds) + 20) as integer
075    set numSetH to ((item 4 of listBounds) + 20) as integer
076    set listSetBounds to {numSetX, numSetY, numSetW, numSetH} as list
077    set bounds to listSetBounds
078    set sidebar width to numSideBarWidth
079    set toolbar visible to boolToolBarVisible
080    set statusbar visible to boolStatusBarVisible
081    set pathbar visible to boolPathBarVisible
082    set zoomed to boolZoomed
083    set collapsed to boolCollapsed
084    set current view to constantCurrentView
085  end tell
086  ##オプション分岐
087  if constantCurrentView is column view then
088    tell column view options of front Finder window
089      set text size to numTextSize
090      set shows icon to boolShowIcon
091      set shows icon preview to boolShowsIconPreview
092      set shows preview column to boolShowsPreviewColumn
093      set discloses preview pane to boolDisClosesPreviewPane
094    end tell
095  else if constantCurrentView is icon view then
096    tell icon view options of front Finder window
097      set arrangement to constantArrangement
098      set label position to constantLabelPosition
099      set background color to listBackgroundColor
100      set text size to numTextSize
101      set icon size to numIconSize
102      set shows item info to boolShowsItemInfo
103      set shows icon preview to boolShowsIconPreview
104    end tell
105  else if constantCurrentView is list view then
106    tell list view options of front Finder window
107      set icon size to constantIconSize
108      set sort column to columnSortColumn
109      set text size to numTextSize
110      set calculates folder sizes to boolCalculatesFolderSizes
111      set shows icon preview to boolShowsIconPreview
112      set uses relative dates to boolUsesRelativeDates
113    end tell
114  end if
115end tell
AppleScriptで生成しました

|

Finder Windowの状態保存と保存したFinder Windowの状態を呼び出す(作成中)

1:現在のFinderWindowの状態をファイルに保存する
2:保存したファイルからFinderWindowの設定を読み出す
3:読み出した設定をFinderに適応する



問題点
1:Finder Window設定はリードオンリーの設定値があるので
全く同じ表示を再現するには手作業が必要になる場合がある
ー>これは現状対応しないことにした
2:設定の値をそのままではファイルに保存できない値がある
ー>キーアーカイブを利用して保存してみる


2024-05-20途中版

ダウンロード - windowsave2call.zip

|

[Bash版]macOS14でFinderでキーボードが受け付けなくなった場合用(openAndSavePanelServiceの強制終了 改良版のプロセス名変更 )


あくまでも参考にしてください

サンプルソース(参考)
行番号ソース
001#!/bin/bash
002#com.cocolog-nifty.quicktimer.icefloe
003#################################################
004#QuickLookUIService openAndSavePanelService DocumentPopoverViewService
005#この3つを終了させる
006###UID
007STR_UID=$(/usr/bin/id -u)
008/bin/echo "ユーザー名(id): $STR_UID"
009###PID
010STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'QuickLookUIService' | grep -v grep | awk '{print $2}')
011/bin/echo "プロセスID: $STR_PID"
012###リストにする
013read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
014###リスト内の項目数
015NUM_CNT=${#LIST_PID[@]}
016/bin/echo "プロセス数:" "$NUM_CNT"
017##リストの数だけ終了させる
018for ITEM_LIST in "${LIST_PID[@]}"; do
019/bin/kill -9 "$ITEM_LIST"
020done
021sleep 1
022###PID
023STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'openAndSavePanelService' | grep -v grep | awk '{print $2}')
024/bin/echo "プロセスID: $STR_PID"
025###リストにする
026read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
027###リスト内の項目数
028NUM_CNT=${#LIST_PID[@]}
029/bin/echo "プロセス数:" "$NUM_CNT"
030##リストの数だけ終了させる
031for ITEM_LIST in "${LIST_PID[@]}"; do
032/bin/kill -9 "$ITEM_LIST"
033done
034sleep 1
035###PID
036STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'DocumentPopoverViewService' | grep -v grep | awk '{print $2}')
037/bin/echo "プロセスID: $STR_PID"
038###リストにする
039read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
040###リスト内の項目数
041NUM_CNT=${#LIST_PID[@]}
042/bin/echo "プロセス数:" "$NUM_CNT"
043##リストの数だけ終了させる
044for ITEM_LIST in "${LIST_PID[@]}"; do
045/bin/kill -9 "$ITEM_LIST"
046done
047sleep 1
048###PID
049STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'com.apple.quicklook.QuickLookSimulator' | grep -v grep | awk '{print $2}')
050/bin/echo "プロセスID: $STR_PID"
051###リストにする
052read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
053###リスト内の項目数
054NUM_CNT=${#LIST_PID[@]}
055/bin/echo "プロセス数:" "$NUM_CNT"
056##リストの数だけ終了させる
057for ITEM_LIST in "${LIST_PID[@]}"; do
058/bin/kill -9 "$ITEM_LIST"
059done
060sleep 1
061###PID
062STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'com.apple.appkit.xpc.documentPopoverViewService' | grep -v grep | awk '{print $2}')
063/bin/echo "プロセスID: $STR_PID"
064###リストにする
065read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
066###リスト内の項目数
067NUM_CNT=${#LIST_PID[@]}
068/bin/echo "プロセス数:" "$NUM_CNT"
069##リストの数だけ終了させる
070for ITEM_LIST in "${LIST_PID[@]}"; do
071/bin/kill -9 "$ITEM_LIST"
072done
073sleep 1
074###PID
075STR_PID=$(/bin/ps -alx | grep "$STR_UID" | grep 'com.apple.appkit.xpc.openAndSavePanelService' | grep -v grep | awk '{print $2}')
076/bin/echo "プロセスID: $STR_PID"
077###リストにする
078read -d '\\n' -r -a LIST_PID <<<"$STR_PID"
079###リスト内の項目数
080NUM_CNT=${#LIST_PID[@]}
081/bin/echo "プロセス数:" "$NUM_CNT"
082##リストの数だけ終了させる
083for ITEM_LIST in "${LIST_PID[@]}"; do
084/bin/kill -9 "$ITEM_LIST"
085done
086
087
088exit 0
AppleScriptで生成しました

ダウンロード - 20240502_042115.html

|

より以前の記事一覧

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat python Acrobat Reader Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Adobe Adobe FDKO Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode QR Barcode QR Decode Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode UTF8 Error EXIFData ffmpeg File Finder Firefox Folder FolderAction Fonts GIF github Guide HTML HTML Entity Icon Illustrator Image Events Image2PDF ImageOptim iPhone iWork Javascript Jedit Json Label Leading Zero List locationd LRC lsappinfo LSSharedFileList m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSPrintOperation NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline perl Photoshop PlistBuddy pluginkit postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML XMP YouTube zoom