Nedan är ett ganska enkelt script som laddar upp filer på en ftp-server. Scriptet illustrerar hur man kan bygga in lite flexibilitet i hur man kan välja filer och starta scriptet. Scriptet kan startas genom:
1. att släppa filer på script-applikationen
2. att markera filer och välja scriptet i scriptmenyn
3. en vanlig Open-dialogruta (default)
Scriptet
property temp_url : "ftp://USERID:PWD@SERVER/path/"
-- Först en "on run" sats, denna triggas om man dubbelklickar på scriptet eller väljer det i scriptmenyn.
on run
tell application "Finder"
set theList to selection
-- Filerna som var markerade sparas i variablen theList.
if (count items in theList) = 0 then
choose file with prompt "Select a file"
set theList to the result as list
end if
-- IF-satsen triggas endast om ingen fil var markerad och visar då Öppna-dialogen
MainLoop(theList)
end tell
end run
-- "on open"-satsen triggas om man släpper filer på script-appen. Filreferenserna lagras i "theList"
on open theList
MainLoop(theList)
end open
-- Både "on run" och "on open" anropar en subrutin (MainLoop) för att utföra själva arbetet. I detta fall är det att ftpa upp filerna till en server mha Interarchy.
on MainLoop(theList)
repeat with i in theList
set current_file to i as alias
tell application "Interarchy 5.0.1"
activate
store current_file url temp_url
end tell
end repeat
beep
end MainLoop
Frågor:
"choose file" tillåter inte att jag väljer flera filer i Öppna-dialogen mha ctrl-klick. Gör det att lösa?
Scriptet avbryts med felmeddelandet "Cannot continue MainLoop när det startas via "on run". På ngt sätt gillar den inte variabeln theList verkar det som. Är det ngt uppenbart fel? Bägge är ju "listor".
Tillägg:
Upptäckte en bugg i scriptet. Om man dubbelklickar direkt på script-appen så visas ingen Open-dialog. Det verkar som att scriptet tolkar själva appen som en markerad fil... Det är ju inte så bra. Workaround?
//mattan