Reputation: 25
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
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
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