レイヤー連続保存スクリプトやってみましたが

jsで即席です。私のところでは、一応動きました(CS2 Win)。
ただしひとつ(すくなkともひとつ、というのが正確でしょうが)解決できません。
最後のコメントアウトしてある//myNewDoc.close();を活かすと、2番目に処理されるレイヤーから、duplicateのところでエラーが起きてしまうのです。

~~~...どうしても、解決できません....
新規作成したファイルを開けっ放しだと、処理は問題なく終わりますけど...。
あるいはもっと根本的なところに問題があるのでしょうか。。。。

詳しい方おられれば、勝手ながら、お教えいただけると幸いです。

docObj = app.activeDocument;
layObj = docObj.layers;
layLength = layObj.length;

//保存先のフォルダを選びます。
myFolderName = Folder.selectDialog("Select a folder to save");

//レイヤーごとの処理。
//見た目で要不要が決められるよう可視レイヤーのみ書き出すという設定にしてみました。
if(myFolderName) {

for (i=0; i<layLength; i++){
theLay = layObj[i];
if(theLay.visible) {
if (theLay.locked)theLay.locked = false;
myLayName = theLay.name;
myNewFname = myFolderName+"\\"+myLayName+".ai";
mySaveFile = new File(myNewFname);

myNewDoc = documents.add();
myPItems = theLay.pageItems;
alert(myPItems);
//各レイヤーにある項目を複製
for(j=0; j<myPItems.length; j++){
if (myPItems[j].locked) myPItems[j].locked = false;
myDupObj = myPItems[j].duplicate();
//複製したものを別ドキュメントに移動です myDupObj.moveToBeginning(myNewDoc);
}
myNewDoc.saveAs(mySaveFile);
//myNewDoc.close();
}
}
}

....どなたかご存知の方おられないでしょうか。
» 001
//複製したものを別ドキュメントに移動です
のコメントの後、改行いれてください。
すみません。
» 002
ごめんなさい、それと

alert(myPItems);

をコメントアウトしてください。

何しろ即席なので...
» 003
javaは解りませんが、closeする前にnillで解放してあげればいいんじゃないかと思いました。

このページをシェア