// 雑記 2012年09月 "); } }

雑記

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ApplScript][Illustrator] 指定間隔で自動保存 修正版

2015-04-03
アプリケーションとOSの組み合わせによっては正しく動作しないケースが報告されましたので修正したものをご用意しました。



前出のAppleScriptの修正版です。


waitTime
で設定した間隔でIllustratorの最前面にあるファイルを保存し、_versionフォルダに、ファイル名+タイムスタンプでコピーします。


waitTime … 保存する間隔を分単位で設定します。デフォルトは15分。

デフォルトでは『PDF互換』にチェックをいれてませんので、互換ファイルの方がよい方は『on doc_save(doc_path)』の部分を修正してください。

上記を設定の上、別名保存でファイルフォーマットからアプリケーションを選び、実行後、自動的に終了しないにチェックをいれて保存してください。
終了させるにはアプリケーションをアクティブにして終了させるか、Dockから終了させてください。

2014-06-24追記
Illustratorの終了に追随して終了するバージョンも作りました。
cycle_save_onquit.zip
※Illustratorが立ち上がっていませんとこのScriptも起動しません。


変更点
  • ドキュメントが変更された時のみ保存するようにしました。(以前は時間がくると必ず保存していました。)





※注意

前回同様、保存という処理の性質上、元に戻せません。ご使用の際には充分な検証をなさった上でご利用下さい。
よくいわれる"At your own risk"でお願いします。
Script処理がはじまった時に、アクティブ(最前面)なファイルに対して保存を行いますので、他のファイルからパーツだけ欲しいという場合等は複製を開いた方がよいでしょう。



cycle_save.applescript.zip



(*

2012-08-27 v1.0

2012-09-06 v1.1 ドキュメント修正時のみ保存

*)

property waitTime : 15 --分単位

on idle {}

my main()

return waitTime * 60

end idle

on main()

tell application "Adobe Illustrator"

if (count of document) is not 0 then

set flg_doc to 0

tell current document

set doc_name to name

try

set doc_path to file path as Unicode text

set flg_doc to 1

on error

display dialog "一度も保存されていないようです" buttons " OK " default button 1

return 

end try

end tell

if modified of current document is true then

my doc_save(doc_path)

if flg_doc is 1 then

try

--display dialog "doc_copy"

my doc_copy(doc_path, doc_name)

on error

--display dialog "make new folder"

tell application "Finder" to make new folder at (my Delimiters(doc_path, doc_name, "") as alias) with properties {name:"_version"}

my doc_copy(doc_path, doc_name)

end try

end if

end if

end if

end tell

end main

on doc_save(doc_path)

tell application "Adobe Illustrator"

save current document in file doc_path as Illustrator with options {class:Illustrator save options, PDF compatible:false}

--PDF互換にするにはPDF compatible:falseをtrueにする

end tell

end doc_save

on doc_copy(doc_path, doc_name)

set p_doc_path to POSIX path of doc_path

set new_doc_path to my Delimiters(p_doc_path, doc_name, "") & "_version/" & my Delimiters(doc_name, ".ai", "") & "_" & my DateToString() & ".ai"

set shellcmd to "cp -p " & quoted form of p_doc_path & " " & quoted form of new_doc_path

--display dialog shellcmd

do shell script shellcmd

end doc_copy

on Delimiters(theText, serchStr, replaceStr)

set OriginalDelimiters to AppleScript's text item delimiters

set AppleScript's text item delimiters to serchStr

set theText to text items of theText

set AppleScript's text item delimiters to replaceStr

set theText to theText as string

set AppleScript's text item delimiters to OriginalDelimiters

return theText

end Delimiters

on DateToString()

set M to do shell script "date +%m"

set D to do shell script "date +%d"

set h to do shell script "date +%H"

set mm to do shell script "date +%M"

set ss to do shell script "date +%S"

set todayStr to M & D & "_" & h & mm

return (todayStr)

end DateToString

続きを読む
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。