プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

久しぶりにAppleScript書いてみた

デジ一眼の画像ファイルをOneDriveに移動するためにSonyのアプリを使用したいと考えていたが、アプリが32ビットなので今の環境で動かない。フォルダの作成とファイルの移動を分けて考えれば、まずは暫定的に作れると思って、いろいろ調べて書いてみました。

今日のフォルダを作るスクリプト

tell application "Finder"
	
	-------#日付を取得して整形
	set nowTime to my DateAndTIme(current date)
	
	-------#フォルダを作る
	try
		make new folder at ("Macintosh HD:Users:username:OneDrive:画像:a72") with properties {name:nowTime}
	end try
	
	
end tell

---------------#ここから日付取得サブルーチン
to DateAndTIme(theDate)
	set y to (year of theDate)
	set m to my monthNumStr(month of theDate)
	set d to day of theDate
	set hms to time of theDate
	set hh to h of sec2hms(hms)
	set mm to m of sec2hms(hms)
	set ss to s of sec2hms(hms)
	
	return (y as text) & "-" & my zero1(m) & "-" & my zero1(d)
	
end DateAndTIme

---------------#月表示を文字列→数字に変換する
to monthNumStr(theMonth)
	set monList to {January, February, March, April, May, June, July, August, September, October, November, December}
	repeat with i from 1 to 12
		if item i of monList is theMonth then exit repeat
	end repeat
	return i
end monthNumStr


-------#時間部分が:で分離されているので:を取っちゃう
to sec2hms(sec)
	set ret to {h:0, m:0, s:0}
	set h of ret to sec div hours
	set m of ret to (sec - (h of ret) * hours) div minutes
	set s of ret to sec mod minutes
	return ret
end sec2hms


-------------#1〜9の場合は01のように0を追加する
to zero1(n)
	if n < 10 then
		return "0" & n
	else
		return n as text
	end if
end zero1

SDカードから画像ファイルを移動するスクリプト

tell application "Finder"
	
	-------#日付を取得して整形
	set nowTime to my DateAndTIme(current date)
	
	set theAlias to choose folder
	set theFiles to every file of theAlias
	repeat with aFile in theFiles
		move aFile to "Macintosh HD:Users:username:OneDrive:画像:a72:" & nowTime
		delete aFile
	end repeat
end tell

日付処理のサブルーチンは同じなので省略。本当は1つにして、ファイル作成日でフォルダ作成したいけど、それは今後の課題ということで。