Доброго времени!
Прошу, снова, о помощи: скриптом хочу обработать выделенную картинку action-ном в Photoshop-е (action обрабатывает и пересохраняет в .psd).
Но, есть проблема: русские имена файлов не обрабатывает
и еще, без
фокус не переходит на InDesign и связь не обновляется
Очень надеюсь на помощь
Прошу, снова, о помощи: скриптом хочу обработать выделенную картинку action-ном в Photoshop-е (action обрабатывает и пересохраняет в .psd).
Но, есть проблема: русские имена файлов не обрабатывает

и еще, без
Код:
alert (myNewFile);
Код:
// Поменять выделенное изображение на аналогичное .psd, после редактирования в Photosop
mySelLink = app.selection[0].allGraphics[0].itemLink;
//Для изменения экшена отредактируй нижеследующие определения
var iniActionSet = "MySet";
var iniActionName = "MyAction";
var myScriptString = "";
var mySelLink = app.selection[0].allGraphics[0].itemLink;
var myFiles = mySelLink.filePath;
// Передаем файл в запускаемый скрипт
myScriptString += "var myFiles = " + getImagePath(myFiles).toSource() + ";";
myScriptString += "for (var myCounter = 0; myCounter < myFiles.length; myCounter++) { ";
myScriptString += "try {";
myScriptString += "app.open(File(myFiles[myCounter]));";
// Передаем экшн
myScriptString += "app.doAction(\'" + iniActionName + "\', \'" + iniActionSet + "\');";
myScriptString += "} catch (error) {alert(error)}";
myScriptString += "}";
// alert(myScriptString);
// Создаем и выполняем объект BridgeTalk
if (executeTarget("photoshop")) {
var bt = new BridgeTalk;
bt.target = "photoshop";
bt.body = myScriptString;
bt.send();
} else {
alert(langAlertPhotoshopNotStarted);
}
#target indesign
myNewFile = myFiles.slice (0, myFiles.length-4);
myNewFile = myNewFile + ".psd";
alert (myNewFile);
//alert();
if (File(myNewFile).exists) mySelLink.relink(File(myNewFile));
mySelLink.update();
//mySelLink.relink(File(myNewFile));
//alert ("Сделано!");
//Функции
function getImagePath(myString) {
var myResult = new Array();
myResult.push(myString);
return myResult;
}
//Функция запуска приложения с использованием функций BrigeTalk (подробно об использовании Bridge Talk смотри в описании Bridge Scripting)
function executeTarget (appSpec) {
try {
// если приложение уже запущено, передаем ему фокус
if (BridgeTalk.isRunning(appSpec)) {
BridgeTalk.bringToFront (appSpec);
} else {
// если приложение не запущено, запускаем его и передаем фокус
BridgeTalk.launch (appSpec);
BridgeTalk.bringToFront (appSpec);
}
return true;
} catch (error) {
return false;
}
}
Очень надеюсь на помощь
Последнее редактирование: