Here's the code for the active text layer
//////////////////////////////////////////////////////
// define your csv-file
// headers must be: "Findfont" and "Replacefont", case sensitive and without spaces
var file = new File("C:\\1\\aaa.csv");
//////////////////////////////////////////////////////
// depending on the data in the csv-file, use the posrscipt name or just the name of the font.
// ex. "Arial-BoldMT" => fontPostScriptName, "Arial" => fontName
var use_postscript_name = false;
//////////////////////////////////////////////////////
file.open("r");
var s = file.read();
file.close();
var data = csv_to_array(s);
replace_styles(activeDocument.activeLayer.id);
alert("done");
//////////////////////////////////////////////////////
function replace_styles(layer_id)
{
try {
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("textLayer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
var textKey = executeActionGet(r).getObjectValue(stringIDToTypeID("textKey"));
var list = textKey.getList(stringIDToTypeID("textStyleRange"));
var new_list = new ActionList();
for (var i = 0; i < list.count; i++)
{
var d = list.getObjectValue(i);
var fr = d.getInteger(stringIDToTypeID("from"));
var to = d.getInteger(stringIDToTypeID("to"));
var st = d.getObjectValue(stringIDToTypeID("textStyle"));
var postscript_name = st.getString(stringIDToTypeID("fontPostScriptName"));
var font_name = st.getString(stringIDToTypeID("fontName"));
for (var x = 0; x < data.length; x++)
{
if (use_postscript_name)
{
if (postscript_name == data[x].Findfont)
{
st.putString(stringIDToTypeID("fontPostScriptName"), data[x].Replacefont);
st.erase(stringIDToTypeID("fontName"));
break;
}
}
else
{
if (font_name == data[x].Findfont)
{
st.putString(stringIDToTypeID("fontName"), data[x].Replacefont);
st.erase(stringIDToTypeID("fontPostScriptName"));
break;
}
}
}
var d = new ActionDescriptor();
d.putInteger(stringIDToTypeID("from"), fr);
d.putInteger(stringIDToTypeID("to"), to);
d.putObject(stringIDToTypeID("textStyle"), stringIDToTypeID("textStyle"), st);
new_list.putObject(stringIDToTypeID("textStyleRange"), d);
}
textKey.putList(stringIDToTypeID("textStyleRange"), new_list);
var d = new ActionDescriptor();
var r = new ActionReference();
r.putIdentifier(stringIDToTypeID("textLayer"), layer_id);
d.putReference(stringIDToTypeID("null"), r);
d.putObject(stringIDToTypeID("to"), stringIDToTypeID("textLayer"), textKey);
executeAction(stringIDToTypeID("set"), d, DialogModes.NO);
}
catch(e) { alert(e); }
}
//////////////////////////////////////////////////////
function csv_to_array(data, sep)
{
try {
if (sep == undefined) sep = /[;,]/;
var lines = data.split(/\r\n|\n/);
var headers = lines[0].split(sep);
var ret = new Array();
for (var i = 1; i < lines.length; i++)
{
var data = lines[i].split(sep);
if (data.length == headers.length)
{
var o = new Object();
for (var j = 0; j < headers.length; j++)
{
o[headers[j]] = data[j];
}
ret.push(o);
}
}
return ret;
}
catch(e) { alert(e); }
}