2013-01-17 6 views
8

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

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

+0

https://indisnip.wordpress.com/2010/09/07/storing-custom -data-into-indesign-file-xmp /ここにも適用されますか? –

答えて

10

あなたは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)]; 
} 
+0

例を編集して、同じ記述子に複数の値を表示します。 –

+0

indesignで動作するソリューションを探すときに他の誰かがこれを見つけた場合:app.insertLabelとapp.extractLabelを使用して環境設定を保存することができます – ChristophK

4

いくつかの選択肢があります。あなたは、テキストファイルを作成し、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作業に文字列を書くことができ、文書ごとの設定したい場合:

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オブジェクトがありません。

0

ドキュメントごとのプリファレンスについては、XMPメタデータの使用をお勧めします。ここでスニペットの例を見つけることができます:http://forums.adobe.com/thread/790973。 Paul Riggottのリンクに示唆されているように、AdobeXMPScriptライブラリを活用して独自の名前空間を作成することができます。

関連する問題