0
votes

I am writing an AppleScript to handle some MTS files. The script recursively iterates through the subfolders of the top-level folder "Volumes:G-Drive:video". The subfolders are arranged into year folders, starting with the folder named "2005" for the year 2005. The runtime error is occurring with the very first folder "2005" that the script tries to iterate. I suspected it is something to do with how I am handling aliases and text, but I am stumped at this point how to fix it. The error at runtime is this: Can’t make {alias "G-DRIVE:video:", "2005:"} into type integer.

I don't know where in my code an integer type comes into play so as to get this error. Script Editor doesn't point me to the location of the runtime error in the code, so i don't know how to figure out which line is causing this either.

set folderName to "Volumes:G-Drive:video" as alias

my processFolder("", folderName)

on processFolder(root, folderNameToProcess)
    tell application "Finder"
        set theItems to every file of folder (root & folderNameToProcess)
        repeat with theFile in theItems
            set Nm to name of theFile as text
            set Ex to name extension of theFile
            if Nm does not contain "-c" and Ex is "MTS" then
                set NmMinusExt to my remove_extension(Nm)
                set logMsg to "Deleting " & Nm
                my logThis(logMsg)
                tell application "Finder" to delete theFile
            end if
        end repeat
        set theItems to every file of folder (root & folderNameToProcess)
        repeat with theFile in theItems
            set Nm to name of theFile as text
            set Ex to name extension of theFile
            --tell (info for theFile) to set {Nm, Ex} to {name, name extension}
            if Nm contains "-c" and Ex is "MTS" then
                set NmMinusExt to my remove_extension(Nm)
                set shortNm to my remove_lastTwoCharacters(NmMinusExt)
                set name of theFile to shortNm & ".MTS" as text
                set logMsg to "Renaming " & Nm
                my logThis(logMsg)
                --set lastTwoLetters to characters (((length of Nm) - 2) as number) thru (((length of Nm) - 0) as number) of (Nm as text)
                --if lastTwoLetters is "-c" then
                --display notification lastTwoLetters
                --end if
            end if
        end repeat
        set theFolders to name of folders of folder (root & folderNameToProcess)
        repeat with theFolder in theFolders
            copy theFolder as string to TheFolderName
            display notification "found folder named: " & TheFolderName
            set firstChar to (text 1 thru 1 of TheFolderName)
            if firstChar is not "." then
                --display dialog (folderNameToProcess & TheFolderName & ":")
                try
                    my processFolder(folderNameToProcess, TheFolderName & ":")
                on error errStr number errorNumber
                    display dialog errStr
                end try
            end if
        end repeat
    end tell
    return
end processFolder

on remove_extension(this_name)
    if this_name contains "." then
        set this_name to ¬
            (the reverse of every character of this_name) as string
        set x to the offset of "." in this_name
        set this_name to (text (x + 1) thru -1 of this_name)
        set this_name to (the reverse of every character of this_name) as string
    end if
    return this_name
end remove_extension

on remove_lastTwoCharacters(this_name)
    set this_name to ¬
        (the reverse of every character of this_name) as string
    set this_name to (text 3 thru -1 of this_name)
    set this_name to (the reverse of every character of this_name) as string
    return this_name
end remove_lastTwoCharacters

The Events pane of Script Editor produces the following trace:

tell application "Finder"
    get every file of folder "G-DRIVE:video:"
    get every file of folder "G-DRIVE:video:"
    get name of every folder of folder "G-DRIVE:video:"
    display notification "found folder named: 2005"
end tell
tell application "Script Editor"
    display notification "found folder named: 2005"
end tell
tell application "Finder"
    get every file of folder {alias "G-DRIVE:video:", "2005:"}
    display dialog "Finder got an error: Can’t make {alias \"G-DRIVE:video:\", \"2005:\"} into type integer."
1

1 Answers

0
votes

folderName is an alias. The attempt to concatenate an alias and a string creates a list which the error indicates.

The solution is to use only (HFS) string paths.

Replace

set folderName to "Volumes:G-Drive:video" as alias

with

set folderName to "G-Drive:video:"

The trailing colon is crucial to be able to add path components