0

activeDocumentを.psd として保存しようとしていますが、このエラーが返されます

エラー: 一般的な Photoshop エラーが発生しました。この機能は、このバージョンの Photoshop では使用できない場合があります。

私のスクリプト:

#target photoshop

var fileRef = new File(app.path.toString() + "/Samples/template.psd");
var docRef = open(fileRef);

//target text layer
var layerRef = app.activeDocument.layers.getByName("Text");

//user input
var newText = prompt("Editing " + layerRef.name, "enter new text: ");

//change contents
layerRef.textItem.contents = newText;

//save
var savePath = "/Samples/" + newText + ".psd";
var saveFile = new File(savePath);
var saveOptions = new PhotoshopSaveOptions();
saveOptions.alphaChannels = false;
saveOptions.annotations = false;
saveOptions.embedColorProfile = true;
saveOptions.layers = true;
saveOptions.spotColors = false;

app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
app.activeDocument.close();

私がやりたいことは、基本的に、テンプレートファイルを何度も複製し、テキストレイヤーのコンテンツのみを置き換えてから、テキストレイヤーで置き換えた文字列の下に保存することです。

ヒントやヘルプをいただければ幸いです。

4

2 に答える 2

0

解決済み

回避策で問題を解決しました。スクリプトとテンプレート ファイルの両方を Photoshop ディレクトリに移動app.path.toString()し、saveFile出力変数に追加しました。そのため、保存する前にパスを文字列に変換する必要があったようです。

Photoshop ディレクトリの外で作業する方法はまだわかりませんが、私にとってはこれでうまくいくので満足しています。それはかなり粗雑ですが、私は提案を受け入れます。したがって、誰かが同様の問題を抱えている場合は、これを参考にしてください。

#target photoshop

var loop = true;
var filePath = "/Samples/template.psd";

while(loop) {
  openTemplate(filePath);
  var layerRef = app.activeDocument.layers.getByName("Text"); //target text layer
  var newText = prompt("Editing " + layerRef.name, "enter new text: "); //user input

  if(newText == "stop") { //stop loop by entering 'stop'
    loop = false;
  }

  layerRef.textItem.contents = newText;
  var savePath = app.path.toString() + "/Samples/" + newText + ".psd";
  var saveFile = new File(savePath);
  savePSD(saveFile);
  app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}

function openTemplate(filePath) { //open template.psd
  var fileRef = new File(app.path.toString() + filePath);
  var docRef = open(fileRef);
}

function savePSD(saveFile) { //saveas newText.psd
  var saveOptions = new PhotoshopSaveOptions();
  saveOptions.alphaChannels = false;
  saveOptions.annotations = false;
  saveOptions.embedColorProfile = true;
  saveOptions.layers = true;
  saveOptions.spotColors = false;
  app.activeDocument.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);
}
于 2015-02-15T12:12:51.663 に答える