benWin
benWin

Reputation: 25

AppleScript error "Can’t make \"" into type integer." number -1700

I know this error has been covered here but I have been searching through the answers for days now and when I think I have cracked it I end up breaking the code somewhere else.

I am trying to run AppleScript in Xcode to make a backup of a folder on a set network machine.

The problem I am having is that the backup is date stamped and in a sub folder on the users Desktop. I am trying to avoid using hard POSIX paths to make the final app universal. All the solutions I have found don't take this in to account.

I apologize for the messy code but I am still learning AppleScript and so end up hashing different bits of code together. my code is

set catFolder to "Catalyst AA"
set bckup to "Backups"
set myDesktop to path to desktop folder as alias
set main_folder to ((path to desktop folder) & "Backups") as string

tell application "Finder"
if not (exists folder (bckup) in myDesktop) then
    set main_folder to (make new folder at desktop with properties {name:bckup}) as      alias
else

    if not (exists folder (catFolder) in main_folder) then
        set cat_folder to (make new folder at folder main_folder with properties {name:catFolder}) as alias
    end if
end if

end tell



try
mount volume "afp://10.0.0.1/Content SSD AA/Catalyst/Catalyst 4.40_m373_HD"

set d to (year of (current date) as text) & "-" & (month of (current date) as integer as text) & "-" & (day of (current date) as text) & "-" & (time string of (current date))
tell application "Finder"
    set f to make new folder at POSIX file "~/Desktop/Backups/Catalyst AA" with properties {name:d}
    duplicate POSIX file "/Volumes/Content SSD AA/Catalyst" to f
end tell
try
    tell application "Finder"
        eject disk "Content SSD AA"
    end tell
end try
end try

the error file is

tell application "Finder"
path to desktop as alias
    --> alias "Macintosh HD:Users:ben:Desktop:"
path to desktop
    --> alias "Macintosh HD:Users:ben:Desktop:"
exists folder "Backups" of alias "Macintosh HD:Users:ben:Desktop:"
    --> true
Result:
error "Can’t make \"Catalyst AA\" into type integer." number -1700 from "Catalyst AA" to   integer

I appreciate it if someone can point out where I'm going wrong.

Thanks for your time

Ben

Upvotes: 1

Views: 4219

Answers (2)

Mockman
Mockman

Reputation: 1205

Here is an all-applescript version:

I have commented out the three volume commands as they just generate errors when the volume isn't available. This way the script will compile and run but obviously won't copy any files. Substitute valid locations and it should work.

set desktopPath to path to desktop folder as text
set catFolder to "Catalyst AA"
set backupFolder to "Backups"
set backupPath to desktopPath & backupFolder & ":" -- path to 'Backups' folder for test
set catPath to backupPath & catFolder & ":" --  path to 'Catalyst AA' folder for test

tell application "Finder"
    if not (exists folder backupPath) then -- test for Backups folder
        set backupPath to (make new folder at desktop with properties {name:backupFolder}) as text
    end if
    if not (exists folder catPath) then -- test for Catalyst AA sub-folder
        set catPath to (make new folder at folder backupPath with properties {name:catFolder}) as text
    end if
end tell

-- mount volume "afp://10.0.0.1/Content SSD AA/Catalyst/Catalyst 4.40_m373_HD"
set ymdt to datetime() -- get date-time string for name of 'f', eg 2025-01-30-4/07 PM
tell application "Finder"
    set f to make new folder at folder catPath with properties {name:ymdt}
    
    -- duplicate POSIX file "/Volumes/Content SSD AA/Catalyst" to f
    -- eject disk "Content SSD AA"
end tell


-- date-time handler
-- zero pads any month before October
-- then combines all elements into a string
on datetime()
    set cd to current date
    set m to (month of cd as integer) as text -- if month has 1 digit
    if m is less than 10 then set m to "0" & m -- then zero pad the month
    
    set dateList to (year of cd) & m & (day of cd) & (time string of cd) as list
    --> {2025, "01", 30, "3:21 AM"}
    set text item delimiters to "-"
    set ymdt to dateList as text -- combines elements, separated by '-'
    --> "2025-01-30-3:21 AM"
    -- NB colon is not permissible in file name, so will be translated to '/'
    return ymdt
end datetime

I know this is a decade late to the party but I saw another more recent issue with this same error and while trying to figure it out, happened upon this question. At first I thought to merely explain the error but then that I may as well post this too.

Upvotes: 0

adayzdone
adayzdone

Reputation: 11238

Try this:

set folderPath to POSIX path of (path to desktop as text) & "Backups/Catalyst AA"
do shell script "mkdir -p " & quoted form of folderPath

try
    mount volume "afp://10.0.0.1/Content SSD AA/Catalyst/Catalyst 4.40_m373_HD"
    set d to (year of (current date) as text) & "-" & (month of (current date) as integer as text) & "-" & (day of (current date) as text) & "-" & (time string of (current date))
    tell application "Finder"
        set f to make new folder at POSIX file folderPath with properties {name:d}
        duplicate POSIX file "/Users/unimac/Desktop/output.csv" to f
    end tell
    try
        tell application "Finder"
            eject disk "Content SSD AA"
        end tell
    end try
end try

Upvotes: 1

Related Questions