Ausgabe
Während es möglich ist, eine Ebene, einen Verlaufsstatus oder einen Ebenensatz mit getByName zu erfassen, scheint es keine für Dokumente zu geben, wenn zwei oder mehr geöffnete Photoshop-Dateien verwendet werden.
var srcDoc = app.Documents.getByName("Gwen_Stefani"); // doesn't work
Ist das richtig?
Die Problemumgehung besteht darin, das Dokumentenarray zu durchlaufen, bis eine Zeichenfolge mit dem erforderlichen Dokument übereinstimmt:
getDocumentByName("Gwen_Stefani");
function getDocumentByName(docname)
{
for (var i = 0; i < documents.length; i++)
{
var someDoc = docname.replace(/\..+$/, "");
if (someDoc.toLowerCase() == docname.toLowerCase())
{
alert(someDoc);
app.activeDocument = documents[i];
}
}
}
Lösung
Wenn Sie sich nicht sicher sind, überprüfen Sie einfach die Skriptreferenz (S. 104):
var srcDoc = documents.getByName("Gwen_Stefani");
activeDocument = srcDoc;
Sie können Dokumente auch nach ID aktivieren, was zuverlässiger ist:
// selects a doc with provided ID
function selectByID(id) {
var desc = new ActionDescriptor();
var ref = new ActionReference();
ref.putIdentifier(charIDToTypeID("Dcmn"), id);
desc.putReference(charIDToTypeID("null"), ref);
executeAction(charIDToTypeID("slct"), desc, DialogModes.NO);
}
// gets an ID for the active doc
function getDocID() {
var ref = new ActionReference();
ref.putProperty(stringIDToTypeID("property"), stringIDToTypeID("documentID"));
ref.putEnumerated(charIDToTypeID("Dcmn"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));
var desc = executeActionGet(ref);
return desc.getInteger(stringIDToTypeID("documentID"));
}
Beantwortet von – Sergey Kritskiy
Antwort geprüft von – Terry (FixError Volunteer)