フォルダアクションのスクリプトハンドラ adding folder items は、.DS_Store や Icon^M のような、Finder が自動的に作成するファイルの存在を考慮に入れて作らないといけない。
除外するファイルを考慮に入れた adding folder items ハンドラのサンプル。
-- 今日の日付のサブフォルダを作って、追加された各項目をそこに入れる
-- フォルダアクション (項目追加時) のハンドラ
on adding folder items to this_folder after receiving these_items
-- フォルダアクションで操作対象外とするファイル
set excludes to {".DS_Store", ".localized", "Icon" & (ASCII character of 13)}
set results to my preparation(this_folder, these_items)
try
-- メインループ
repeat with this_item in these_items
tell application "Finder"
-- 処理対象外のファイルは、ハンドラを invoke しない
if name of this_item is not in excludes then
my itemHandler(this_folder, this_item, results)
end if
end tell
end repeat
on error error_message number error_number
display dialog error_message
end try
end adding folder items to
-- 準備
on preparation(this_folder, these_items)
-- ファイル移動のための準備
set today_foldername to my getCurrentDate()
tell application "Finder"
-- 今日の日付のフォルダがない時は作る
if not (exists folder today_foldername of this_folder) then
make new folder at this_folder with properties {name:today_foldername}
end if
folder today_foldername of this_folder
end tell
end preparation
-- 各項目に対する処理
on itemHandler(this_folder, this_item, target_folder)
-- 追加された項目を今日の日付のフォルダに格納する
tell application "Finder"
considering application responses
move this_item to the target_folder
end considering
end tell
end itemHandler
on getCurrentDate()
-- yyyy-mm-dd のフォーマットで日付を取得する
do shell script "date +%Y-%m-%d"
end getCurrentDate
0 件のコメント:
コメントを投稿