Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна помощь человека!

‎nintendo+ [people][разбанен] Мудрец (12398), на голосовании 11 месяцев назад
У меня есть наборы данных в Фотошопе. Нужно сделать 22 отдельных png изображения с каждым из наборов данных. Вручную это долго. Вот я и попробовал попросить чатгпт написать скрипт. В общем, не получается.
Скрипт:
// Путь к папке экспорта
var exportFolder = Folder.selectDialog("Выберите папку для экспорта изображений");

if (exportFolder) {
for (var i = 1; i <= 22; i++) {
// Название набора данных
var datasetName = "Набор данных " + i; // Убедитесь, что название соответствует названию в Photoshop
try {
// Попытка получить набор данных по имени
var dataset = app.activeDocument.dataSets.getByName(datasetName);
if (dataset) {
dataset.apply();
var pngFile = new File(exportFolder + "/Image_" + i + ".png");
var pngSaveOptions = new PNGSaveOptions();
app.activeDocument.saveAs(pngFile, pngSaveOptions, true, Extension.LOWERCASE);
}
} catch (e) {
// Если набор данных не найден, выводим сообщение об ошибке
alert("Набор данных '" + datasetName + "' не найден. Ошибка: " + e.message);
break; // Прерываем цикл, если набор данных не найден
}
}
} else {
alert("Папка для экспорта не выбрана.
Скрипт остановлен.");
}
Результат: набор данных не найден.

Скрипт проверки:
// Выводим список всех наборов данных
try {
var datasets = app.activeDocument.dataSets;
var allDataSets = [];
for (var i = 0; i < datasets.length; i++) {
allDataSets.push(datasets[i].name);
}
alert("Доступные наборы данных:\n" + allDataSets.join("\n"));
} catch (e) {
alert("Ошибка при получении списка наборов данных: " + e.me
ssage);
}


Результат: ошибка при получении списка набора данных: undefined is not an object.


Что делать? Вручную не интересно...
Голосование за лучший ответ
Semen Kapacuk Гуру (3750) 1 год назад
Во-первых, в цикле у тебя i <= 22, а элементов всего 22, нумерация в массивах с нуля начинается.
А во-вторых, если ошибка "undefined is not an object." выводится, значит есть и более подробно строка кода или название функции, где оно пытается вызывать
Nickie Просветленный (28397) 1 год назад
 // Путь к папке экспорта 
var exportFolder = Folder.selectDialog("Выберите папку для экспорта изображений");

if (exportFolder) {
// Убедимся, что у нас есть активный документ
if (app.activeDocument) {
for (var i = 1; i <= 22; i++) {
// Название набора данных
var datasetName = "Набор данных " + i; // Убедитесь, что название соответствует названию в Photoshop
try {
// Попытка получить набор данных по имени
var dataset = app.activeDocument.dataSets.getByName(datasetName);
if (dataset) {
dataset.apply();
var pngFile = new File(exportFolder + "/Image_" + i + ".png");
var pngSaveOptions = new PNGSaveOptions();
app.activeDocument.saveAs(pngFile, pngSaveOptions, true, Extension.LOWERCASE);
}
} catch (e) {
// Если набор данных не найден, выводим сообщение об ошибке
alert("Набор данных '" + datasetName + "' не найден. Ошибка: " + e.message);
break; // Прерываем цикл, если набор данных не найден
}
}
} else {
alert("Нет активного документа в Photoshop.");
}
} else {
alert("Папка для экспорта не выбрана. Скрипт остановлен.");
}
‎nintendo+ [people][разбанен]Мудрец (12398) 1 год назад
Ошибка: undefined is not an object ?
‎nintendo+ [people][разбанен]Мудрец (12398) 1 год назад
Почему же он не видит мои датасеты... Похоже, придется все вручную
Dlazder Мудрец (16875) 1 год назад
Не знал что можно на js скрипты писать в Фотошопе
Похожие вопросы