Your best friend for file transfer.

AppleScript (2 posts)
This is an archived topic. The information in it is likely to be out-of-date and no longer applicable to current versions of Fetch.
- Started 19 years ago by JWB
- Latest reply 19 years ago from Jim Matthews
-
JWB Member
-
Jim Matthews Administrator
Thanks for sharing your script!
Jim Matthews
Fetch Softworks
- Page 1
Topic closed
This topic has been closed.
Greetings!
I've been using Fetch for a number of years and have only recently gotten into AppleScripting it.
The example scripts that came with the program are very nice and have helped me a lot by their example.
I thought I would contribute a script I've found useful. This script creates 7 folders in the directory you're looking at using Fetch; they are named for today and the next six days. If you've already created a few days' worth of folders, the script creates seven more starting the day after the last folder already there. A dialog box gives some control.
I've done this in AppleScript 1.9.3 for OSX 10.3.4. One "sort" command uses Acme Script Widgets OSAX but I suspect you can get along without using the "sort" command.
The text of the script follows this message if the bulletin board will support it; if it does you, you can download the file as an OSX .ZIP archive from http://d57-51-120.home.cgocable.net/~jwb/7days.zip
Regards, John Bast
Windsor, Ontario
property Plus1 : 86400
property theMonths : {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
global NumberDate, StartDate, NextDays
OpeningDialog()
GetSevenDays()
tell application "Fetch 4.0.3"
activate
repeat with i from 1 to 7
set dirName to item i of NextDays as text
try
make new remote directory at beginning with properties {name:dirName}
on error
display dialog ¬
"Directory may already exist!" buttons {"Cancel"} default button 1 with icon 0
exit repeat
end try
end repeat
end tell
tell me
activate
display dialog "All done!" buttons {"OK"} default button 1 giving up after 5
end tell
on GetSevenDays()
set testDate to current date
set TextDate to testDate
DateToNumbers(TextDate)
set testDate to NumberDate
set i to 0
repeat while testDate < StartDate
set i to i
set testDate to (current date) Plus1 * i)
set TextDate to testDate
DateToNumbers(TextDate)
set testDate to NumberDate
end repeat
set NextDays to {}
set j to 0
copy testDate to end of NextDays
repeat while (count of NextDays) < 7
set j to j
set TextDate to (current date) Plus1 * (i ))
if TextDate as text does not contain "Sunday" then
DateToNumbers(TextDate)
copy NumberDate to end of NextDays
end if
end repeat
end GetSevenDays
(*on OpeningDialog()
set TextDate to (current date)
DateToNumbers(TextDate)
set theInput to display dialog ¬
"What folder date should I start with?" buttons {"Cancel", "OK"} default button 2 default answer NumberDate with icon 1
set StartDate to text returned of theInput
end OpeningDialog*)
on OpeningDialog()
set FolderNames to {}
tell application "Finder"
set appList to the name of every application process
end tell
set Good to "N"
if appList contains "Fetch 4.0.3" then
tell application "Fetch 4.0.3"
if exists transfer window 1 then
set Good to "Y"
end if
end tell
end if
if Good = "Y" then
tell application "Fetch 4.0.3"
set transferWind to transfer window 1
repeat with i from 1 to (count transferWind each remote item)
set curItem to (a reference to remote item i of transferWind)
set FileName to name of curItem
copy FileName to end of FolderNames
end repeat
end tell
set DateFolders to {}
repeat with i from 1 to (count of FolderNames)
set curName to item i of FolderNames
set curNums to {}
repeat with j from 1 to (count of characters of curName)
set Good to "N"
if not (((ASCII number of (character j of curName)) > 47) and ((ASCII number of (character j of curName)) < 58)) then
exit repeat
else
set Good to "Y"
end if
end repeat
if Good = "Y" then copy curName to end of DateFolders
end repeat
if DateFolders != {} then
set derDates to Acme sort DateFolders into ascending order
set SD to last item of derDates
set SD1 to ((SD as real) ) as integer as text
if (count of characters of SD1) as text != 4 then
set StartDate to "0" & SD1 as text
else
set StartDate to SD1 as text
end if
set theInput to display dialog ¬
"What folder date should I start with?" buttons {"Cancel", "OK"} default button 2 default answer StartDate with icon 1
set StartDate to text returned of theInput
else
set TextDate to (current date)
DateToNumbers(TextDate)
set theInput to display dialog ¬
"What folder date should I start with?" buttons {"Cancel", "OK"} default button 2 default answer NumberDate with icon 1
set StartDate to text returned of theInput
end if
else
display dialog "Make sure you have Fetch open, and you're looking in the directory where you want the dated folders to appear." buttons {"Cancel", "OK"} default button 1 with icon 2
end if
end OpeningDialog
on DateToNumbers(TextDate)
set TextDate to TextDate as text
set theDate to word 3 of TextDate as integer
if theDate < 10 then
set theDate to "0" & theDate as text
else
set theDate to theDate as text
end if
set theMonth to word 2 of TextDate
repeat with i from 1 to 12
if item i of theMonths = theMonth then
set theMonth to i as integer
exit repeat
end if
end repeat
if theMonth < 10 then
set theMonth to "0" & theMonth as text
else
set theMonth to theMonth as text
end if
set NumberDate to theMonth & theDate
end DateToNumbers
Posted 19 years ago #