Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AppleScript choose file or folder

can I use AppleScript to choose either file or folder in one time?

Now I could use

tell application "SystemUIServer" to return POSIX path of (choose file)

or

tell application "SystemUIServer" to return POSIX path of (choose folder)

to get file or folder. However I cannot get file or folder in one time.

like image 695
Hao Xiao Avatar asked Oct 03 '22 15:10

Hao Xiao


1 Answers

No, you can't do it with "choose file" or "choose folder" verbs, but choosing a file or folder (or multiple files/folders) is supported by the underlying NSOpenPanel. So you can do it with AppleScriptObjC. Here's an example using ASObjCRunner (derived from here):

script chooseFilesOrFolders
    tell current application's NSOpenPanel's openPanel()
        setTitle_("Choose Files or Folders") -- window title, default is "Open"
        setPrompt_("Choose") -- button name, default is "Open"

        setCanChooseFiles_(true)
        setCanChooseDirectories_(true)
        setAllowsMultipleSelection_(true) -- remove if you only want a single file/folder

        get its runModal() as integer -- show the panel
        if result is current application's NSFileHandlingPanelCancelButton then error number -128 -- cancelled
        return URLs() as list
    end tell
end script

tell application "ASObjC Runner"
    activate
    run the script {chooseFilesOrFolders} with response
end tell

ASObjCRunner converts a NSArray of NSURL objects into an AppleScript list of files; the results can look something like:

{file "Macintosh HD:Users:nicholas:Desktop:fontconfig:", file "Macintosh HD:Users:nicholas:Desktop:form.pdf"}
like image 164
Nicholas Riley Avatar answered Oct 07 '22 08:10

Nicholas Riley