And you can save the data by putting it to an action descriptor and saving to custom options. I have assumption about JSON encoding, but many other ways of stuffing things to action descriptors are possible.
savePreferences: function (metadata) { var metadata_json = serialize_to_json(metadata) var desc = new ActionDescriptor() desc.putData(0, metadata_json) app.putCustomOptions (APP_ID, desc, true) }, loadPreferences: function () { try { var desc = app.getCustomOptions (APP_ID) if (desc) { var metadata_json = desc.getData(0) if (metadata_json) { eval("var result = (" + metadata_json + ")") if (result) { return result } } } } catch (e) { var foo = e.message } },