アプリ版:「スタンプのみでお礼する」機能のリリースについて

Adobeソフトで使用するJavascriptです

保存する度に数値をインクリメントしたいです。

①プロジェクトファイルを保存(ABC.aep)

②保存すると、oldフォルダにバックアップデータが保存されます(ABC_001.aep)

ここまではできたのですが、もう一度保存するとABC_002.aepとならずに、ABC_001.aepに上書きされてしまいます。

ABC_001.aepの同階層にある特定のフォルダ「oldフォルダ」の中(ABC_001.aep)を見て、インクリメントで保存(ABC_002.aep)するにはどのようにしたらよろしいでしょうか?


<コード>
var currentProject = app.project;
var currentFile = currentProject.file;

if (!currentFile) {
currentProject.save();
}
else {
currentProject.save(currentFile);

var currentFileName = currentFile.name;
var namePos = currentFileName.lastIndexOf(".");

if (namePos != -1) {
currentFileName = currentFileName.substring(0, namePos);
}

folderName = currentFile.path+"/"+"old";
folderObj = new Folder(folderName);
folderObj.create();

var currentProject = app.project;
var currentFile = currentProject.file;
var extPos = currFileName.lastIndexOf(".");
var ext = "";

if (extPos != -1) {
ext = currFileName.substring(extPos, currFileName.length);
currFileName = currFileName.substring(0, extPos);
}

var incrementer = 0;

if (currFileName.charAt(currFileName.length -4) == "_") {
incrementer = currFileName.substring(currFileName.length - 3, currFileName.length);
currFileName = currFileName.substring(0, currFileName.length -4);
}

incrementer++;
var istring = incrementer + "";

if( (incrementer / 10) < 1.0) {
istring = "0" + istring;
}

if( (incrementer / 100) < 1.0) {
istring = "0" + istring;
}

var newFile = File(folderName + "/" + currentFileName +"_"+ istring);
flag = currentProject.save(newFile);
newFile.copy(currentFile);
app.open(currentFile)
}

A 回答 (1件)

Adobe の API はよく知りませんので推測ですが



// ファイル保存
var currentProject = app.project;
currentProject.save();
var currentFile = currentProject.file;

// バックアップ先のフォルダ
var backupPathName = currentFile.path + "/old";
var backupFolder = new Folder(backupPathName);
if (!backupFolder.exists) backupFolder.create();

// バックアップ先のファイル
var currentFileName = currentFile.name;
var m = /^(.+)(\.\w+)$/.exec(currentFileName);
var baseName = m? m[1]: currentFileName;
var extName = m? m[2]: "";
var i, suffix, backupFile;
for (i=1; i<1000; i++) {
suffix = "_" + ("000" + i).substr(-3);
backupFile = new File(backupPathName + "/" + baseName + suffix + extName);
if (!backupFile.exists) break;
backupFile = null;
}

// バックアップ保存
if (backupFile) currentFile.copy(backupFile);
    • good
    • 0
この回答へのお礼

返信遅れてすみません。

すごい美しいアンサーです。!ありがとうございます!!!

お礼日時:2017/01/28 17:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!