9

ExtendScriptを使用してJavaScriptでPhotoshopスクリプトに取り組んでいます。私のスクリプトはユーザー入力を許可しているので、使用の合間に保存したいと思います。つまり、スクリプトを後で使用するときにアクセスできるように、特定のキーの下に単純な文字列または数値を保存する方法を探しています。簡単に言えば、スクリプトの設定を保存したいと思います。それ、どうやったら出来るの?

さらに良いのは、ドキュメントごとに少なくともいくつかの設定を保存できることです。それは可能ですか?つまり、ドキュメントに任意のデータを保存できますか?

4

3 に答える 3

12

put / getカスタムオプションを使用して、Photoshopの起動後も保持される設定パラメータを保存できます。

const kMyFlag = app.stringIDToTypeID( "myFlag" );
const kMyNumber = app.stringIDToTypeID( "myNumber" );
const kMySettings = "mySettings";

function saveSettings()
{
  var desc = new ActionDescriptor();
  desc.putBoolean(kMyFlag, true);
  desc.putInteger(kMyNumber, 42);

  // "true" means setting persists across Photoshop launches.
  app.putCustomOptions( kMySettings, desc, true );
}

function getSettings()
{
  var desc = app.getCustomOptions( kMySettings );
  return [desc.getBoolean( kMyFlag ), desc.getInteger( kMyNumber )];
}
于 2013-04-11T23:22:57.683 に答える
7

いくつかのオプションがあります。テキストファイルを作成し、Fileオブジェクトを使用して書き込むことができます。

var prefs = new File("~/desktop/prefs.txt");
prefs.open("w"); // or "a" to append
prefs.writeln("user:lenny;favorite_color:ff6600;likes:sunsets;");

...好みをスクリプト自体に関連付けたい場合。

ドキュメントごとの設定が必要な場合は、次のDocument.infoように使用しているファイルのメタデータフィールドの1つに文字列を書き込むことができます(「instructions」フィールドを使用しますが、任意の書き込み可能なフィールドを使用できます)。

var doc = app.activeDocument;
doc.info.instructions = "user:lenny;favorite_color:ff6600;likes:sunsets;";
//alert(doc.info.instructions); // see, it works!

文字列を実際にフォーマットする方法については、単純な構成ファイルのように行うことができます。複雑なユーザー設定オブジェクトがある場合は、そのXMLオブジェクトを使用して文字列を作成およびシリアル化できます。JSONはこれに最適ですが、残念ながらExtendscriptにはJSONオブジェクトがありません。

于 2013-01-21T02:04:20.463 に答える
1

ドキュメントごとの設定については、XMPメタデータの使用をお勧めします。スニペットの例は、http://forums.adobe.com/thread/790973にあります。AdobeXMPScriptライブラリを利用して、PaulRiggottによるリンクで提案されているような独自の名前空間を作成できます。

于 2013-01-27T12:45:18.130 に答える