Applescript using if/else if and a list
applescript, itunes, macos
Solution
Try:
set selectedOption to {choose from list myOption} as text
since
set selectedOption to {choose from list myOption}
return class of selectedOption
is a list.
Problem
I am working on a script to control itunes for a school play. The problem is that I can't get it to go through the if statements. It does set the variable `selectedOption` but once it hots the ifs and else ifs it seems to just skip over them. ``` --repeat activate set myOption to {"Start Play", "Scene 1", "Between Scenes", "Scene 2", "Next Song", "End Play"} set selectedOption to {choose from list myOption} ---------End Play--------- if selectedOption is "End Play" then tell application "iTunes" set currentvolume to the sound volume if (player state is playing) then -- if so, fade out the current track repeat with i from currentvolume to 0 by -2 set the sound volume to i delay 0.1 end repeat stop end if end tell display dialog "Volume Back Up?" buttons {"Full", "80", "End"} default button "Full" if the selectedOption is "Full" then tell application "iTunes" set sound volume to 100 end tell else if the selectedOption is "80" then tell application "iTunes" set sound volume to 80 end tell end if exit repeat ---------Scene 1--------- else if the selectedOption is "Scene 1" then tell application "iTunes" -- get the initial volume set currentvolume to the 60 -- are we playing? if (player state is playing) then -- if so, fade out the current track repeat with i from currentvolume to 0 by -2 set the sound volume to i delay 0.02 end repeat next track end if -- now, regardless of whether we were playing or not, fade in the next track set the sound volume to 0 play playlist "2012 Play Christmas" repeat with j from 0 to currentvolume by 2 set the sound volume to j delay 0.02 end repeat --do shell script "open ~/Desktop/2.app" exit repeat end tell ---------Between Scenes--------- else if the selectedOption is "Between Scenes" then tell application "iTunes" -- get the initial volume set currentvolume to the 60 -- are we playing? if (player state is playing) then -- if so, fade out the current track repeat with i from currentvolume to 0 by -2 set the sound volume to i delay 0.02 end repeat next track end if -- now, regardless of whether we were playing or not, fade in the next track set the sound volume to 0 play playlist "2012 Play Intermission" repeat with j from 0 to currentvolume by 2 set the sound volume to j delay 0.02 end repeat end tell ---------Scene 2--------- else if the selectedOption is "Scene 2" then tell application "iTunes" -- get the initial volume set currentvolume to the 60 -- are we playing? if (player state is playing) then -- if so, fade out the current track repeat with i from currentvolume to 0 by -2 set the sound volume to i delay 0.02 end repeat next track end if -- now, regardless of whether we were playing or not, fade in the next track set the sound volume to 0 play playlist "2012 Play Christmas2" repeat with j from 0 to currentvolume by 2 set the sound volume to j delay 0.02 end repeat end tell ---------Next Song--------- else if the selectedOption is "Next Song" then tell application "iTunes" -- get the initial volume set currentvolume to the 60 -- are we playing? if (player state is playing) then -- if so, fade out the current track repeat with i from currentvolume to 0 by -2 set the sound volume to i delay 0.02 end repeat next track end if -- now, regardless of whether we were playing or not, fade in the next track set the sound volume to 0 play repeat with j from 0 to currentvolume by 2 set the sound volume to j delay 0.02 end repeat end tell ---------Begin Play--------- else if the selectedOption is "Begin Play" then tell application "iTunes" set sound volume to 100 play playlist "2012 Play Intro" end tell end if --end repeat ``` I commented out the repeats until I can get it to select the correct statement.