1

iTunesに特定のトラックを再生するように指示するAppleScriptを作成しようとしています。これが私のコードです。「theCommand」を「アーティストトレインでシェイクアップクリスマスを再生する」に設定すると、テストメールを右クリックして「ルールを適用」をクリックするとスクリプトが機能するため、困惑しています。ただし、電子メールで再生するように指示した場合は機能しません。

using terms from application "Mail"
on perform mail action with messages messageList for rule aRule
    tell application "Mail"
        repeat with thisMessage in messageList
            try
                set theCommand to content of thisMessage as string
            on error errMsg
                display alert errMsg
            end try
        end repeat
    end tell
    tell application "iTunes"
        if theCommand contains "play" then
            if theCommand is equal to "play" then
                play
            else
                set prevTIDs to text item delimiters of AppleScript
                set text item delimiters of AppleScript to "play "
                set subject to text items of theCommand
                set text item delimiters of AppleScript to ""
                set subject to "" & subject
                set AppleScript's text item delimiters to " by artist "
                set delimitedList to every text item of subject
                set theTrack to the first item of delimitedList
                try
                    set theArtist to the second item of delimitedList
                    set artistIsDefined to true
                on error
                    set artistIsDefined to false
                end try
                set AppleScript's text item delimiters to prevTIDs
                if artistIsDefined is true then
                    try
                        play (every track in playlist 1 whose artist is theArtist and name is theTrack)
                        say "Playing " & theTrack
                    on error errMsg
                        say errMsg
                    end try
                else
                    play (every track in playlist 1 whose name is theTrack)
                end if
            end if
        else if theCommand is equal to "pause" then
            pause {}
        else if theCommand is equal to "stop" then
            stop {}
        end if
    end tell
end perform mail action with messages
end using terms from

Macは「再生中(トラック)」と電子メールに応答しますが、トラックは再生されません。iTunesがアクセスできるので、ファイルがTimeCapsuleにあるという事実は重要ではありません。(iTunesは、できなかった場合、トラック名の左側に感嘆符を表示していました。)

4

1 に答える 1

2

私の推測では、このコマンドでは「すべて」という単語を「最初」に変更する必要があります...

play (every track in playlist 1 whose artist is theArtist and name is theTrack)

私は自分の理論をテストしませんでしたが、「すべて」という単語を使用すると、そのコマンドからトラックのリストを取得できると思います(リストにトラックが1つしかない場合でも)。そして、iTunesはリストを再生する方法を知りません。iTunesはトラックを再生できます。したがって、「first」を使用すると、最初に見つかったトラックが見つかり、機能するはずです。または、リストの最初のアイテムを取得することもできます...再生((すべてのトラック...)のアイテム1)。

于 2012-11-29T02:49:17.593 に答える