+1  A: 

you just had some things out of scope all the opening closing and writing of the text file must be done outside of itunes and texedit is not needed

 set summaryFile to ((path to desktop as Unicode text) & "songs2.txt")
 try
    close access (summaryFile as alias) -- close the file if its open alreayd
 end try
 set ff to open for access file summaryFile with write permission
 tell application "iTunes"
    if player state is playing then
        set sel to current track as list
    else if selection is not {} then
        set sel to selection
    end if

    set noSong to ""
    repeat with this_track in sel
        set the_lyrics to lyrics of this_track
        set {art, nom} to {artist of this_track, name of this_track}
        if the_lyrics is not "" then
            tell me
                set myVar to art & nom & the_lyrics
                write myVar to ff starting at eof
            end tell
        else
            beep
        end if
    end repeat
 end tell
 close access (summaryFile as alias)
mcgrailm
+2  A: 

Here are two subroutines I use to manage writing data to a text file:

on WriteLog(the_text)
        set this_story to the_text
        set this_file to (((path to desktop folder) as text) & "MY STORY")
        my write_to_file(this_story, this_file, true)
end WriteLog

on write_to_file(this_data, target_file, append_data)
    try
        set the target_file to the target_file as text
        set the open_target_file to ¬
            open for access file target_file with write permission
        if append_data is false then ¬
            set eof of the open_target_file to 0
        write this_data to the open_target_file starting at eof
        close access the open_target_file
        return true
    on error
        try
            close access file target_file
        end try
        return false
    end try
end write_to_file    

Please note write_to_file() is Apple's code from their own old Applescript site in Essential Subroutines. WriteToLog() is my own subroutine that wrote to interface with write_to_file with only one argument, the text itself. Add salt to taste. To rewrite the script accomodate the above subroutines, I would do it like this:

tell application "iTunes"
    if player state is playing then
        set sel to current track as list
    else if selection is not {} then
        set sel to selection
    end if

    set noSong to ""
    repeat with this_track in sel
        set the_lyrics to this_track's lyrics
        set {art, nom} to {this_track's artist, this_track's name}
        if the_lyrics is not "" then
            set myVar to art & nom & the_lyrics
            my WriteLog(myVar)
        else
            beep
        end if
    end repeat
end tell
Philip Regan
@Philip : Thanks for the script, and the WriteToLog() should have been WriteLog(), without it, it works fine.
prosseek
Whoops! Fixed. Thanks for catching that.
Philip Regan