在Photoshop脚本中保存每个用户或每个文档的首选项

Dav*_*man 8 extendscript photoshop-script

我正在使用ExtendScript在JavaScript中处理Photoshop脚本.我的脚本允许一些用户输入,我想在使用之间保存它.也就是说,我正在寻找一种方法来保存特定键下的简单字符串或数值,以便我能够在后续使用脚本时访问它.简单地说,我想保存我的脚本的首选项.我怎么做?

更好的是能够在每个文档的基础上保存至少一些首选项.那可能吗?也就是说,我可以用文档存储任意位数据吗?

J. *_*son 11

您可以使用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 )];
}
Run Code Online (Sandbox Code Playgroud)


pdi*_*izz 6

您有一些选择。您可以创建一个文本文件并使用File对象进行写入:

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

...如果您希望将偏好设置与脚本本身联系在一起。

如果您希望按文档进行首选项,则可以将字符串写入您正在使用的文件的元数据字段之一Document.info(使用“指令”字段,但您可以使用任何可写字段):

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

至于如何实际格式化字符串,您可以像一个简单的配置文件一样进行操作,或者,如果您具有复杂的用户首选项对象,则可以使用该XML对象来构造和序列化它。JSON非常适合此操作,但是不幸的是,Extendscript中没有JSON对象。