I would like to pass a value received from ASOC to finder, but can’t find the right place to enter my Tell Finder command. Here’s what the script looks like right now. I know the value is being returned because it worked in the commented-out display dialog command.
script ImpoCombineAppDelegate
property parent : class "NSObject"
property date_field : missing value
on DoWithDate_(sender)
set the input_date to date_field's floatValue()
set adDate_value to input_date
--display dialog adDate_value
set adFolder to "work Folders:Creative:Weekly_Ads_Print_"
tell application "Finder"
open folder (adFolder & adDateValue)
end tell
tell adDate_Readout to setFloatValue_(adDate_value) as text
end DoWithDate_
on applicationWillFinishLaunching_(aNotification)
-- Insert code here to initialize your application before any files are opened
end applicationWillFinishLaunching_
on applicationShouldTerminate_(sender)
-- Insert code here to do any housekeeping before your application quits
return current application's NSTerminateNow
end applicationShouldTerminate_
end script
If someone could help me out I’d really appreciate it… I’m trying to learn how to use ASOC and struggling to get a grasp on it. If you do know how to fix this for me, would you also mind explaining why too?
Looks like you are pretty close… but your adFolder path might be wrong. I think that you need to start the path with the path to your disk. So if your disk is called “Macintosh HD,” and work folders is in the root, then you would set adFolder to “Macintosh HD:work Folders:Creative:Weekly_Ads_Print_:”
Hmm, well Work Folders is actually a server… I don’t think that’s it. I checked the finder commands in AS Editor too, and it’s fine. I’m afraid that someone is going to say you can’t actually write straight-up applescript in ASOC… please tell me I’m wrong!
I don’t know how to incorporate the other very large AS script I wrote into ASOC. Which is another question I have… Can I still use regular expressions with ASOC?
In your original script, you are not using the save variable names for the date value.
adDateValue and adDate_value
Most likely that was the issue.
Try this.
on DoWithDate_(sender)
set adDateValue to date_field's floatValue() as string
set adFolder to ("work Folders:Creative:Weekly_Ads_Print_" & adDateValue)
tell application "Finder"
open folder adFolder
end tell
tell adDate_Readout to setFloatValue_(adDate_value) as text
end DoWithDate_
Thanks for your help everyone! It turns out that my problem was not actually with the script itself. Instead, it was because of the way I connected things. I originally had not used the bindings options, but found that when I re-wrote the code to accomodate bindings, it worked beautifully.
Now I have another question… when is it proper to use bindings, and why? And when can you use the simple connecting method? Can you mix the two within the same script? I ask because the newly fixed script works if the user presses the return key, but I’m now stuck on getting the button to run the script (yeah, I’m realllly a beginner…) Do I now need to bind the button to run the script to something? I have it connected to the DoWithDate handler, but nothing else. I would like the user to have the option to either hit return or the button to get things going.
Here’s the new script if anyone is interested:
script ImpoCombineAppDelegate
property parent : class "NSObject"
property date_field : missing value
on DoWithDate_(sender)
set adDateValue to date_field as string
set adFolder to ("work Folders:Creative:Weekly_Ads_Print_" & adDateValue)
tell application "Finder"
open folder adFolder
end tell
set my adDateValue to (date_field as text)
end DoWithDate_
end script
Bindings and target-action connections do different things, so you’ll often use both. You can write apps without using bindings, but probably not without target-action connections.
If you have the button connected, that’s fine. You can assign return as a shortcut for the button in Interface Builder, or you can make DoWithDate_ the selector of the date text field, so that if you hit return in it or tab out of it, the handler is called.